2015-11-22 1 views
0

Вот несколько PHP-кода. 0 - найти в ассоциативном массиве явно. Если я попытаюсь поместить его в другой, он не будет назначен. Единственный способ, которым я знаю, как обойти это, - явно проверить, чтобы он был 0, используя ===. Это единственный способ?Невозможно назначить 0 массиву, если он был в comc в php.

<?php 
     $vars['one'] = '31234'; 
     $vars['two'] = 'sldf'; 
     $vars['three'] = 1 - 1; 
     $return_array = []; 
     foreach ($vars as $key => $value){ 
      echo "---------------Just value<br>"; 
      var_dump($value); 
      echo "<br>"; 
      $value != '' ? ($return_array[$key] = $value) : null; 
      echo "---------------array of key<br>"; 
      var_dump($return_array[$key]); 
      echo "<br>"; 
     } 
?> 

Я получаю эту приятную вещь назад.

---------------Just value 
string(5) "31234" 
---------------array of key 
string(5) "31234" 
---------------Just value 
string(4) "sldf" 
---------------array of key 
string(4) "sldf" 
---------------Just value 
int(0) 
---------------array of key 
NULL 

В любом случае, лучше, чем if ($key === 0) { // stuff }?

+0

Что именно вы пытаетесь достичь? «0 - найти в ассоциативном массиве явно». <- Что подразумевается под предложением? – Jan

ответ

1

Вы используете «свободное сравнение» при выполнении $value != ''. Это также вычисляет значение false для 0. См. Таблицу для сравнения here.

Если вы использовали $value !== '', он вставлял бы 0 в массив.

Смежные вопросы