此问题在此处已有答案:
Two arrays in foreach loop(24个答案)
6小时前关门了。
刚开始在PHP中使用JSON数据,一整天都在这个问题上。我有一个特定股票的OHLC/V值的嵌套关联JSON数组。下面是json_decode()
返回的JSON文件的最小示例,带有true
标志。
$data = array(
"c"=>array(
0 => "162.75",
1 => "162.27"
),
"h"=>array(
0 => "166.77",
1 => "166.22"
),
"l"=>array(
0 => "162.5",
1 => "162.2"
),
"o"=>array(
0 => "164.63",
1 => "162.67"
),
"s"=>"ok",
"t"=>array(
0 => "1679443200",
1 => "1679529600"
),
"v"=>array(
0 => "4367267",
1 => "1865365"
)
);
对于每个以字母命名的数组(除了s之外),我需要获得以下格式的单行输出:
array("x" => tVal, "y" => array(oVal ,hVal ,lVal ,cVal, vVal)),
下面是“0”的结果示例:
array("x" => 1679443200, "y" => array(164.63 ,166.77 ,162.5 ,162.75, 4367267)),
这些array()
线中的每一条都将被制成另一个具有以下格式的数组,以创建蜡烛图。
$dataPoints = array(
array(result1),
array(result2),
array(resultN)
);
真实的的JSON数据将返回90天的数据,因此理想情况下循环必须达到90天,但如果可用时间少于90天,我更希望它在数组末尾自动停止。
以下是我在测试一些可能的解决方案时得出的结论:
$i = 0;
while($i <= 90){
foreach($data as $x => $val){
if($x == 't'){
echo 'array(x => '.$val[$i].'), y=array(';
echo '<br>';
}
if($x != 's' and $x != 't'){
echo $x.'='.$val[$i];
echo '<br>';
}
}
$i++;
echo '<br>';
}
行0的示例输出为:
c=162.75
h=166.77
l=162.5
o=164.63
array(x => 1679443200), y=array(
v=4367267
如您所见,我能够启动正确的输出数组并将“t”结果移动到正确的位置,但我无法找到正确排序“o”、“h”、“l”、“c”和“v”的方法。
2条答案
按热度按时间fykwrbwg1#
你不需要嵌套循环,只要索引合适的嵌套数组就可以了。
lokaqttq2#