0

I have an array which consists of this set of items

array(3) {
  [0]=>
  array(4) {
    ["Field1"]=>
    string(8) "80000007"
    ["Field2"]=>
    string(16) "O70000006"
    ["Field3"]=>
    string(0) ""
    ["Field4"]=>12345
    string(0) ""
   }
  [1]=>
  array(4) {
    ["Field1"]=>
    string(8) "80000008"
    ["Field2"]=>
    string(16) "O70000007"
    ["Field3"]=>
    string(0) ""
    ["Field4"]=>78965
    string(0) ""
  }
  [2]=>
   array(4) {
    ["Field1"]=>
    string(8) "80000009"
    ["Field2"]=>
    string(16) "H80000006"
    ["Field3"]=>
    string(0) ""
    ["Field4"]=>12345
    string(0) ""
  }
}

Now my question is Iam trying to display only the items once from array or trying to filter the array in such a way if the "Field2" has a value starting with "O" or "H" and their "Field4 " value should be different . If the "Field4" value is same for the each of the row then we dont display that row or array item . For eaxample from the above array we will get 2 items as follows

1)80000007 O70000006 12345
2)80000008 O70000007 78965

//we are not displaying the 3rd Item because The "Field4 " is same . we display only once

 foreach ($resultset  as $key => $value){           
            echo $key."<br>"; ///  outputs 0,1,2
            echo $value['Field2']."<br>"; // outputs O70000006, O70000007, H80000006
}
1
  • It's not clear what do you want to reach ? Commented Jun 30, 2011 at 14:48

2 Answers 2

1
function getField2_removeDupeField4($arr){
     $f4 = array();
     $f2 = array();
     foreach($arr as $array){
          if(in_array($array['Feild4'], $f4){   continue;  }
          $firstChar = substr($array['Feild2'], 0, 1);
          if($firstChar == 'O' || $firstChar == 'H'){
               $f2[] = $array;
               $f4[] = $array['Feild4'];
          }
     }
     return $f2;
}

So to get the array you want:

$new_arr = getField2_removeDupeField4($orig_arr);
Sign up to request clarification or add additional context in comments.

Comments

0

So... you just want some way to skip rows whose Field4 has already been printed?

Set up an array to hold all the previously printed Field4s, and check against that before printing anything. Something like this:

$field4s = array();
foreach ($resultset  as $key => $value){    
            $field4 = $value['Field4'];
            if (($field4[0] == 'O' || $field4[0]=='H') && !in_array($field4 , $field4s) {
                array_push($field4s, $field4);
                echo $field4;
            }
}

1 Comment

You forgot to check for the 'O' or 'H'

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.