我有一个单独的列表“category * value”,以分号分隔:
$list = 'category1*value1;category2*value2;category3*value3;'
将这些元素放入变量或数组并在IF语句中使用它们的最佳方法是什么?
if ( $main_category == //category1..2..3// ){
echo 'Category:' . //category1..2..3// . 'Value:' //value1..2..3//
}
答案 0 :(得分: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]}";
}
但是更容易将其存储起来。这样你根本不需要for循环,类别列表也变得更容易阅读:
$catlist = array(
'category1' => 'value1',
'category2' => 'value2',
'category3' => 'value3',
);
答案 1 :(得分:1)
试试这个..
$list = 'category1*value1;category2*value2;category3*value3;';
$a = (explode(";", $list));
$b = implode("*", $a);
$c = explode("*", $b);
现在$ c将包含类别和值作为数组。在每个奇数位置都会有类别,而在每个偶数位置都会有价值。 您可以相应地编写循环来访问每个元素。 希望这有帮助。