从列表中获取变量并在IF语句中使用它们

时间:2015-09-13 08:45:37

标签: php

我有一个单独的列表“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//
    }

2 个答案:

答案 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将包含类别和值作为数组。在每个奇数位置都会有类别,而在每个偶数位置都会有价值。 您可以相应地编写循环来访问每个元素。 希望这有帮助。