0
foreach ($arr as $key => $value) {
    foreach ($arr_ as $key_ => $value_) {
        $dev[$value_][] = array_search($value_, $arr[$key]);
    }
}

I need to exclude all boolean false from array search, but preserve the original keys. So, this is what i want for AAAA. How can i do that?

'AAAA' => 
        array
          1 => int 0
          3 => int 1
          5 => int 1
          7 => int 2
          9 => int 1
          11 => int 2
          13 => int 2
          15 => int 3

What i have:

array
  'AAAA' => 
    array
      0 => boolean false
      1 => int 0
      2 => boolean false
      3 => int 1
      4 => boolean false
      5 => int 1
      6 => boolean false
      7 => int 2
      8 => boolean false
      9 => int 1
      10 => boolean false
      11 => int 2
      12 => boolean false
      13 => int 2
      14 => boolean false
      15 => int 3
  'BBBB' => 
    array
      0 => boolean false
      1 => boolean false
      2 => int 0
      3 => int 0
      4 => boolean false
      5 => boolean false
      6 => int 1
      7 => int 1
      8 => boolean false
      9 => boolean false
      10 => int 1
      11 => int 1
      12 => boolean false
      13 => boolean false
      14 => int 2
      15 => int 2
  'CCCC' => 
    array
      0 => boolean false
     ....
user455318
  • 3,280
  • 12
  • 41
  • 66

4 Answers4

3

For a single array you could use this:

foreach($array as $key => $element) {
    if($element === false) {
        unset($array[$key]);
    }
}

Then just wrap it in another foreach loop to handle the others (note the reference &$array):

foreach($arrays as &$array) {
    foreach($array as $key => $element) {
        if($element === false) {
            unset($array[$key]);
        }
    }
}
George Brighton
  • 5,131
  • 9
  • 27
  • 36
1
$arr = array(false,0,false,1,false,2,false,0,false);
$out = array_filter($arr, function($in) { return false !== $in; });
var_dump($out);

Outputs:

array(4) {
  [1]=>
  int(0)
  [3]=>
  int(1)
  [5]=>
  int(2)
  [7]=>
  int(0)
}
OIS
  • 9,833
  • 3
  • 32
  • 41
0

See this answer here: Delete an element from an array

You can use unset() to preserve the keys, triggered by an if statement (if false) { unset($array[$index]) } etc.

Community
  • 1
  • 1
Sterling Archer
  • 22,070
  • 18
  • 81
  • 118
0

Use array_filter, it saves original keys php.net: array_filter

$newArr=array_filter($oldArr, function($el) { return $el !== false; })
Rowman Pirce
  • 423
  • 2
  • 8