2016-01-29 2 views
1

Я следующий массив ($post_options), он может появляться в различных ипостасях, ключ динамична:PHP: Проверьте, если ключ массива имеет значение

Это может быть, как это:

массива (1) {[95] => строка (2) "25"}

это может быть, как это, ключ может быть любым:

array (1) {[05] => string (2) ""}

Я хочу добавить управляющий оператор, который контролирует, имеет ли значение в первом ключевом элементе значение.

У меня есть этот код:

if (!isset($post_options[0])) { 
      // value is empty 
      var_dump($post_options); 
     } 
     else { 
      // value has value 
      echo 'Option Selected'; 
     } 

Но это не работает, он возвращает истину, если значение установлено и не установлен. Какое здесь решение? Благодаря

Таким образом, если массив будет выглядеть так (значение первого ключа пуст):

массив (1) {[05] => строка (2) ""}

Я хочу var_dump(); в этом случае

+0

вы можете объяснить больше? что вы хотите точно и в настоящее время, что вы получаете? – jilesh

+0

Я думаю, что try! Empty() или empty() condition – jilesh

+0

@jilesh Я пробовал это, но не радость, утверждение возвращает true, в этом случае значение wheter имеет значение или нет. –

ответ

2

Если вы не знаете, первый ключ массива - использовать array_keys, например, чтобы получить все ключи от вашего массива.

$ar = array('95' => 'val'); 
$keys = array_keys($ar); 
$first_item = $ar[$keys[0]]; 
var_dump($first_item); // outputs: string(3) "val" 

Другим вариантом может быть current функция, которая вернет вам текущий элемент массива. Учитывая, что вы не двигаетесь указатель массива, код может быть:

$ar = array('95' => 'new_val', '02' => 'val2'); 
$cur = current($ar); 
var_dump($cur); // outputs: string(7) "new_val" 

После этого вы можете использовать стандартную empty функцию для проверки:

if (empty($cur)) 

или

if (empty($first_item)) 
0

IsSet проверяет, является ли позиция массива существует или нет, а не является ли она совпадающей или не содержит значения.

Вы лучше посмотрите на функцию empty, чтобы сделать это

if (empty($post_options[0])) { 
    // value is empty 
    var_dump($post_options); 
} else { 
    // value has value 
    echo 'Option Selected'; 
} 

надеюсь, что это помогает

+0

'isset' фактически проверяет, существуют ли ключи * и *, не отображается на' null'. –

+0

Возвращает false, установлено ли значение или нет. –

+0

, тогда я боюсь, что ваш элемент массива не пуст, иначе функция будет работать. Попробуйте напечатать элементы в обоих случаях и увидеть значения. – ponciste

8

В зависимости от конкретных требований, есть три варианта.

  1. array_key_exists($key, $array) Это самый простой вариант. Он возвращает true, если массив имеет данный ключ, и в противном случае возвращает false.

  2. isset($array[$key]) Чуть более строгий, чем array_key_exists, поскольку он также требует, чтобы значение, присвоенное ключ не null.

  3. !empty($array[$key]) (обратите внимание на !) Это самый строгий вариант, поскольку он требует, чтобы значение, чтобы не быть любое пустое значение (то есть, не null, false, 0, '0', и т.д.).

Есть еще некоторые варианты, опять же, в зависимости от конкретных требований. Мне кажется, что вы ищете опцию !empty, так как она (в частности) отклонит пустые строки.

+0

Хорошо сказано. +1 за то, что они ясны и кратки. – jdm2112

1

попробовать это

if (!isset($post_options[0])) {   // value is empty 
    if(!empty($post_options[0])) { 
      var_dump($post_options);   
    }   
} 
Смежные вопросы