2015-09-13 2 views
-2

У меня есть список разделенных «категории * значение», разделенных точкой с запятой:Получить переменные из списка и использовать их в операторе IF

$list = 'category1*value1;category2*value2;category3*value3;' 

Что бы лучший способ, чтобы получить эти элементы в переменную , или массив и использовать их в инструкции IF?

if ($main_category == //category1..2..3//){ 
     echo 'Category:' . //category1..2..3// . 'Value:' //value1..2..3// 
    } 
+0

Почему вы не создаете массив PHP с строковыми ключами? – Victor

+0

Вы хотите проверить, содержится ли '$ main_category' в этом _list_ или что-то еще? – Victor

ответ

1

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

<?php 
$main_category = 'category1'; 

$list = 'category1*value1;category2*value2;category3*value3;'; 

$listitems = explode(';', $list); 
// Split the string on the ';', look: 
// var_dump($listitems); 

$catlist = array(); 
foreach ($listitems as $item) { 
    $parts = explode('*', $item); 
    if (count($parts) == 2) { 
    $catlist[$parts[0]] = $parts[1]; 
    } 
} 
// See what happened. Array is now in cat => value format. 
//var_dump($catlist); 

if (array_key_exists($main_category, $catlist)) { 
    echo "Category: $main_category, {$catlist[$main_category]}"; 
} 

Но проще хранить его прямо сейчас. Таким образом, вам не нужно для цикла на всех, и список категорий становится легче читать, а также:

$catlist = array(
    'category1' => 'value1', 
    'category2' => 'value2', 
    'category3' => 'value3', 
); 
1

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

$list = 'category1*value1;category2*value2;category3*value3;'; 
$a = (explode(";", $list)); 
$b = implode("*", $a); 
$c = explode("*", $b); 

Теперь $ C будет содержать категорию и значение как массив. в каждой нечетной позиции будет категория, и в каждом четном положении будет значение. Вы можете писать циклы соответственно для доступа к каждому элементу. Надеюсь, эта помощь ..