多维数组告诉是否使用基于flag的值

时间:2015-01-13 06:19:38

标签: php arrays multidimensional-array

Array ( 
[0] => Array ( [address] => New York [address_flag] => 0 ) 
[1] => Array ( [address] => London [address_flag] => 1)

假设我上面有这个数组,address 1将始终存在,而address 2可以为null如果可用,我怎么能获得address 2的值;我怎么知道address 2是否为空?

我正在获得他们的价值

foreach (address() as $value) {

echo $value['address']

}

UPDATE

我想仅在带有标志1的地址不可用的情况下才使用带有标志0的地址。如何进行此操作?感谢任何想法

2 个答案:

答案 0 :(得分:1)

您可以使用issetis_null。例如: -

foreach (address() as $value) {

   echo isset($value['address']) ? $value['address'] : "";
   echo isset($value['address_flag']) ? $value['address_flag'] : "";

}

答案 1 :(得分:1)

<?php

function address(){

$a = array(array ( "address" => "New York", "address_flag" => 0 ), 
           array ( "address" => "London",   "address_flag" => 1 ),
           array ( "address" => "Amsterdam","address_flag" => 1),
           array ( "address" => null,       "address_flag" => null));

return $a;
}

$address = '';
$grouped_by_zero = array();
$grouped_by_one = array();
$array = address();

for ($i=0, $max = count($array); $i < $max; $i++ ){
    foreach($array[$i] as $key => $value) {
      if ($key == "address") {
         $address = $value;
      }     
      if ($key == "address_flag"){
          if ( $value === 0 ){
            array_push($grouped_by_zero,$address);
          } else if ($value === 1) {
              array_push($grouped_by_one,$address);
          }
      }// end outer if      
    }// end foreach
}// end for

foreach($grouped_by_zero as $item){
    echo $item . "\n";
}
echo "\n";
foreach($grouped_by_one as $item){
    echo $item . "\n";
}
//output:

New York

London
Amsterdam

现场演示:http://3v4l.org/3utBH

通过使用标识运算符===,排除空值;只接受与0或1相同的值。