解析数组中的数组


parse array inside array

我有以下数组:

Array ( 
[0] => Array ( [id] => 1 [grpname] => RF [grpid] => 1 [value] => 1.40 ) 
[1] => Array ( [id] => 1 [grpname] => BP [grpid] => 2 [value] => 1.90 ) 
[2] => Array ( [id] => 1 [grpname] => DSH [grpid] => 3 [value] => 2.46 ) 
[3] => Array ( [id] => 2 [grpname] => RF [grpid] => 1 [value] => 1.40 ) 
[4] => Array ( [id] => 2 [grpname] => BP [grpid] => 2 [value] => 1.90 ) 
[5] => Array ( [id] => 2 [grpname] => DSH [grpid] => 3 [value] => 2.46 ) 
[6] => Array ( [id] => 3 [grpname] => RF [grpid] => 1 [value] => 1.40 ) 
[7] => Array ( [id] => 3 [grpname] => BP [grpid] => 2 [value] => 1.90 ) 
[8] => Array ( [id] => 3 [grpname] => DSH [grpid] => 3 [value] => 2.46 ) 
)

如何根据id键对其进行拆分,并为每个id创建一个数组?

致以最诚挚的问候Artam

这将是您问题的答案。。。

<?php
$payload = Array ( 
[0] => Array ( [id] => 1 [grpname] => RF [grpid] => 1 [value] => 1.40 ) 
[1] => Array ( [id] => 1 [grpname] => BP [grpid] => 2 [value] => 1.90 ) 
[2] => Array ( [id] => 1 [grpname] => DSH [grpid] => 3 [value] => 2.46 ) 
[3] => Array ( [id] => 2 [grpname] => RF [grpid] => 1 [value] => 1.40 ) 
[4] => Array ( [id] => 2 [grpname] => BP [grpid] => 2 [value] => 1.90 ) 
[5] => Array ( [id] => 2 [grpname] => DSH [grpid] => 3 [value] => 2.46 ) 
[6] => Array ( [id] => 3 [grpname] => RF [grpid] => 1 [value] => 1.40 ) 
[7] => Array ( [id] => 3 [grpname] => BP [grpid] => 2 [value] => 1.90 ) 
[8] => Array ( [id] => 3 [grpname] => DSH [grpid] => 3 [value] => 2.46 ) 
)
// creates "separate" variables for entries named $payload_0, $payload_1, ...
foreach ($payload as $key=>$value) {
  $innerName = sprintf('payload_%s', $key);
  $$innerName = $value; 
}
// test output to make the conversion clear: 
var_dump($payload_4);

这毫无意义。

这只会使事情变得更加复杂,并使内存使用量翻倍。您也可以像$payload[4]那样直接使用内部数组。

所以问题是:为什么你想做这样的事情?为了什么目的?

附带说明:上面的代码不起作用,因为我刚刚复制了您指定的数组表示法,这是无效的php代码。但你应该明白


考虑到你在下面的评论,我认为这更有可能是你正在寻找的:

<?php
$payload = Array ( 
[0] => Array ( [id] => 1 [grpname] => RF [grpid] => 1 [value] => 1.40 ) 
[1] => Array ( [id] => 1 [grpname] => BP [grpid] => 2 [value] => 1.90 ) 
[2] => Array ( [id] => 1 [grpname] => DSH [grpid] => 3 [value] => 2.46 ) 
[3] => Array ( [id] => 2 [grpname] => RF [grpid] => 1 [value] => 1.40 ) 
[4] => Array ( [id] => 2 [grpname] => BP [grpid] => 2 [value] => 1.90 ) 
[5] => Array ( [id] => 2 [grpname] => DSH [grpid] => 3 [value] => 2.46 ) 
[6] => Array ( [id] => 3 [grpname] => RF [grpid] => 1 [value] => 1.40 ) 
[7] => Array ( [id] => 3 [grpname] => BP [grpid] => 2 [value] => 1.90 ) 
[8] => Array ( [id] => 3 [grpname] => DSH [grpid] => 3 [value] => 2.46 ) 
)
// iterate over the payload array and do whatever you want to do with the entries: 
foreach ($payload as $key=>$value) {
    // here output the inner array however you want to
    // $value now _is_ the inner value in each iteration of the loop
}