一组参数值

时间:2012-02-07 12:26:06

标签: php arrays

function test()
{   
$content = "lang=en]text en|lang=sp]text sp";
$atts = explode('|', $content);
}

我要做的是让自己回应$ param [en]得到“text en”,$ param [sp]得到“text sp”。这可能吗?

  • $ content实际上来自数据库记录。

3 个答案:

答案 0 :(得分:1)

如果这不是$ content

中的硬编码字符串
function test()
{   
   $content = "lang=en]text en|lang=sp]text sp"; 
   $atts = explode('|', $content);
   foreach($atts as $att){
      $tempLang = explode("]", $att);
      $params[array_pop(explode("=", $tempLang[0]))] = $tempLang[1];
   }

   var_dump($params);
}

答案 1 :(得分:1)

$param = array();
$langs = explode('|', $content);
foreach ($langs as $lang) {
    $arr = explode(']', $lang);
    $key = substr($arr[0], 5);
    $param[$key] = $arr[1];
}

如果你确定$ content的格式正确,那就是这样。否则你需要进行额外的检查以确保$ langs和$ arr是他们应该的。使用以下命令快速检查数组中的内容:

echo '<pre>'.print_r($array_to_be_inspected, true).'</pre>';

希望这有帮助

答案 2 :(得分:0)

我认为在这种情况下你可以使用正则表达式。

$atts = explode('|', $content);
foreach ($atts as $subtext) {
    if (preg_match('/lang=(\w+)\](\w+) /', $subtext, $regs)) {
        $param[$regs[0]] = $regs[1];
   }
}

虽然如果该值来自数据库,您似乎有一个错误的数据库结构 - 如果您可以编辑它,请尝试使数据库遵守以生成database normal