php:从数组创建变量

时间:2012-01-04 21:33:04

标签: php

我有一个多部分数组,我想抓住一块并为它创建一个变量。以下是该数组的示例:

array(17) { 
  [0]=> array(2) { 
      [0]=> int(1325003844) [1]=> array(2) { 
          [0]=> int(31) [1]=> string(19) "ONBOARD TEMPERATURE" } 
      } 

有32个不同的部分,其中我想要的值(如上面引号中的文字)可以在$ foo [x] [1]找到,x是0-31的值。所以我想知道我是否可以使用foreach或者创建一个循环,它将遍历变量的每次迭代并拉动该文本并将其添加到变量中。

所以我现有的代码是:

if(isset($result[1][10])) { // If index 10 of $result exists
    $json_a =  $result[1][10];
    var_dump ($json_a);

要在单个变量中获取我想要的值,我需要立即将$ foo_01分配给$ json_a [0] [1],然后执行32次。 ($ json_a [1] [1],$ json_a [2] [1],$ json_a [3] [1]等等。我宁愿只有一个声明,一下子将它们全部分配。

如果您需要其他信息,请与我们联系。再次感谢!

2 个答案:

答案 0 :(得分:3)

当然可以。

//Initialize an array variable to hold the names
$names= array();

//Creates an array of 32 strings (the names)
foreach ($items as $item){
    $names[]=$item[1]; 
}
//If you want to display all of the name at once, you can easily
//Implode the array to echo all of the items with a linebreak in between
echo implode('<br />', $names); 

//or you can cycle through the results and do something for each name
//although this can be done in the original loop.
foreach ($names as $name){
    echo $name.'<br />';
}

在旁注中,您展示的阵列架构对我来说似乎有点奇怪。对于你想要做的事情一点都不了解,你认为这样的格式会更好吗?

array(31) { 
    [0]=> array(2) { 
        [id]=> int(1325003844),
        [name]=> "ONBOARD TEMPERATURE"
    }, 
    [1]=> array(2) { 
        [id]=> int(1325003845), 
        [name]=> "NAME 2"
    }, 
    etc...
}

这样你已经完成了数组,准备好循环了吗?

<强>更新

foreach($results as $result){
    if(isset($result[1][10])) { // If index 10 of $result exists
        $foo[] =  $result[1][10];
    }
}

//Then you can access each one when needed
echo $foo[1];

答案 1 :(得分:0)

如果连续使用两个'$',PHP实际上会使用变量的值来创建该名称的新变量。例如:

$var1 = 'variable2'
$$var1 = 'hello';

echo $var1;
echo $variable2;

将输出:

variable2
hello

从上面的例子来看,你的命名约定似乎不支持(在“ONBOARD TEMPERATURE”中有一个空格)所以,你最好使用带有关联id键的数组。例如:

$values[$foo[x][1]] = $foo[x][0];

会为您提供输出$values['ONBOARD TEMPERATURE']的{​​{1}}变量。