многомерный массив сказать, если использовать значение на основе флага

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

Допустим, у меня этот массив выше, address 1 всегда будет там, а address 2 может быть пустым, как я могу получить значение address 2 если оно доступно, как я могу сказать, что address 2 является нулевым или нет?

Я получаю их значение как это

foreach (address() as $value) {

echo $value['address']

}

UPDATE

Я хочу использовать адрес с флагом 0 только в том случае, если адрес с флагом 1 недоступен.. как это сделать?

  • 0
    Ваш address() должен быть функцией?
  • 1
    Вы просто имеете в виду if(isset($value['address'])) ?
Показать ещё 2 комментария
Теги:
arrays
multidimensional-array

2 ответа

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.

  • 0
    ваш код немного сложен, вы можете просто показать мне, если флаг равен 1, показать мне адрес для 1, если флаг равен 0 адрес для 0?
  • 0
    Хорошо, я пересмотрел код - надеюсь, это поможет.
Показать ещё 4 комментария
1

Вы можете использовать isset и is_null. Например:-

foreach (address() as $value) {

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

}
  • 0
    Могу ли я сказать, если address_flag равен 1 или 0?
  • 1
    Вы можете проверить, если условие.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню