2014-10-26 3 views
2

Здесь у меня есть переменная $ json объединена с возможными тремя условиями.Как сделать трубку в соответствии с условиями

В соответствии с приведенными ниже условиями: $ first, $ second и $ third, выход должен конкатенатироваться с трубой. Так что вывод должен быть либо три приведены ниже

Ожидаемое


first 
or 
first | second 
or 
first | second | third 

Здесь упрощена мой код:

<?php 
$json = ""; 
$first = "1"; 
$second = "1"; 
$third = "1"; 
$pipe = "|"; 
     if ($first == 1) 
     {   
     $json .= "first"; 
     } 
     $json .= $pipe; 
     if ($second == 1) 
     {   
     $json .= "second"; 
     } 
     $json .= $pipe; 
     if ($third == 1) 
     { 
     $json .= "third"; 
     }  
    echo $json; 
?> 

Как я могу сделать $ pipe для получения моего вывода ожидается d для переменных $ JSON

Примечания: Как я использую некоторую сложную Flexi сетку, взрывать все еще делает маленький комплекс

+0

Кажется, работает для меня: http://codepad.org/FDKce6Cw –

+0

Я получаю тот же результат, как ваш желаемый результат. Однако вы должны включить условие трубы в состояние 'if' – Prateek

+0

Ваш код идеально подходит для желаемого результата. –

ответ

3

Попробуйте это:

$json = ""; 
$first = "1"; 
$second = "1"; 
$third = "1"; 
$pipe = "|"; 
$data = array(); 
if ($first == 1) $data[] = "first"; 
if ($second == 1) $data[] = "second"; 
if ($third == 1) $data[] = "third"; 
$json = implode($pipe, $data); 
echo $json; 

Или какой-то другой способ, как this, например.

+0

Я не думал об этом. Nice +1 – Prateek

+0

Спасибо, я должен пойти на impode –

0

Самым простым решением для этого всегда сцепить трубку после переменной конкатенации Тогда усечения конечная строка - 1 символ. Если вы печатаете прямо на stdout, удалите этот последний канал с помощью сочетания «назад-космос» и «пространство».

2

Вы можете сделать это:

$array = array(
    'first' => $first, 
    'second' => $second, 
    'third' => $third 
); 

echo implode($pipe, array_keys(array_filter($array))); 

array_filter удаляет пару ключ/значение, значение которого falsely, array_keys возвращает массив их ключей, и implode соединяет значения с помощью $pipe.

+0

http://codepad.org/iSBksoEM –

0
$json; 
$first = true; 
$second = true; 
$third = true; 
$pipe = " | "; 

if ($first === true) { 
    $json .= "first"; 
} 
if ($second === true) { 
    $json .= $pipe . "second"; 
} 
if ($third === true) { 
    $json .= $pipe . "third"; 
} 
echo $json; 
+0

Что такое вывод, если $ first - false? –

+0

| второй | третий – MrGrigri

+0

Что ожидается как второй | third –

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