2017-02-17 2 views
-3

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

$reportHeader = array("name" => !empty($name) ? "Name" : "0", 
    "number" => !empty($number) ? "Number" : "0"); 

В этом случае я напечатать имя и номер присутствует, если нет я вернуть 0.but я нет необходимости печатать 0.if условия не откажет мне нужно сбросить значение. Я попытался, как это:.

$reportHeader = array("name" => !empty($name) ? "Name" : unset(), 
     "number" => !empty($number) ? "Number" : unset(); 

Но через ошибку

+0

Что вы пытаетесь сбросить? Вы не сказали PHP, какой массив или индекс хотите удалить. – drmonkeyninja

+0

Я хочу удалить индекс в массиве –

ответ

2

Вы не можете использовать unset() подобные, он ожидает, что переменный будет принят к нему на отключенный (см PHP documentation Вместо заполнения вашего массив с null значений, где значение не были установлены, а затем использовать array_filter для удаления индексов, которые вы не хотите.

$reportHeader = array(
    "name" => !empty($name) ? "Name" : null, 
    "number" => !empty($number) ? "Number" : null 
); 
// Now remove the 'unset' values 
$reportHeader = array_filter($reportHeader); 
+0

Да, он работает, но иногда $ name может возвращать «» (нулевое значение), он возвращает, мы хотим напечатать them.but array_filter удалить «» также –

+0

@RaghulRajendran, возможно, вам понадобится использовать ' isset() ', а не'! empty() 'в этом случае. – drmonkeyninja

0

unset() нужен один или более ARG uments. Поэтому, если вы включили отчет об ошибках и проверили документацию для этой функции, вы сами это увидите. Тогда возникает вопрос: что именно вы пытаетесь отменить?

Вам нужно вернуть что-то в качестве значения вашего массива, а не unset() стать значением (как вы сейчас пытаетесь). Если вы собираетесь только добавить элемент, если значение не пусто, то вы можете сделать

$reportHeader = array(); 
!empty($name) ? $reportHeader['name'] = "Name" : null; 
!empty($number) ? $reportHeader['number'] = "Number" : null; 

Это добавляет только значение в массив, если они не являются пустыми.

Несмотря на то, что стандарт if делает это совершенно чистым, тоже - просто потому, что что-то может быть записанным как тернарный оператор, не означает, что он должен.

if (!empty($name)) 
    $reportHeader['name'] = "Name"; 
0

Вы можете просто использовать ниже код

!empty($name) ? $reportHeader["name"] = "Name" : ""; 
!empty($number) ? $reportHeader["number"] = "Number" : ""; 
Смежные вопросы