Php 数组\合并和数组\映射
这就是我想要达到的目标:Php 数组\合并和数组\映射,php,Php,这就是我想要达到的目标: array ( 'category_0' => array ( 'count' => 12, 'avg' => 11, ), 'category_1' => array ( 'count' => 14, 'avg' => 13, ), 'category_2' => array ( 'count' => 16, 'avg' => 1
array (
'category_0' =>
array (
'count' => 12,
'avg' => 11,
),
'category_1' =>
array (
'count' => 14,
'avg' => 13,
),
'category_2' =>
array (
'count' => 16,
'avg' => 15,
),
'category_3' =>
array (
'count' => 18,
'avg' => 17,
),
)
从以下方面:
$category =
array (
0 => '9',
1 => '10',
2 => '11',
3 => '12',
)
以及:
以及:
通过使用
$category
上的foreach
和array\u map
函数执行一些其他方法,我得到了$count
和$avg
变量。现在我需要根据初始示例重新加入所有内容。我尝试了array\u merge()
,但无法使其正常工作。“category_x”的关键字名称并不重要。我甚至不确定是否有可能按照我需要的顺序得到最终结果。任何帮助都将不胜感激 结合使用数组_键
和foreach
循环,您可以轻松完成此任务
示例:
<?php
$category = array (
0 => '9',
1 => '10',
2 => '11',
3 => '12'
);
$count = array (
0 => '12',
1 => '14',
2 => '16',
3 => '18'
);
$avg = array (
0 => '11',
1 => '13',
2 => '15',
3 => '17'
);
$out = array();
$key = array_keys($category);
foreach ($key as $key) {
$out["category_{$key}"] = array(
'count' => isset($count[$key]) ? $count[$key] : 0,
'avg' => isset($avg[$key]) ? $avg[$key] : 0
);
}
print_r($out);
Array
(
[category_0] => Array
(
[count] => 12
[avg] => 11
)
[category_1] => Array
(
[count] => 14
[avg] => 13
)
[category_2] => Array
(
[count] => 16
[avg] => 15
)
[category_3] => Array
(
[count] => 18
[avg] => 17
)
)
使用
array_键
和foreach
循环的组合,您可以轻松完成这一任务
示例:
<?php
$category = array (
0 => '9',
1 => '10',
2 => '11',
3 => '12'
);
$count = array (
0 => '12',
1 => '14',
2 => '16',
3 => '18'
);
$avg = array (
0 => '11',
1 => '13',
2 => '15',
3 => '17'
);
$out = array();
$key = array_keys($category);
foreach ($key as $key) {
$out["category_{$key}"] = array(
'count' => isset($count[$key]) ? $count[$key] : 0,
'avg' => isset($avg[$key]) ? $avg[$key] : 0
);
}
print_r($out);
Array
(
[category_0] => Array
(
[count] => 12
[avg] => 11
)
[category_1] => Array
(
[count] => 14
[avg] => 13
)
[category_2] => Array
(
[count] => 16
[avg] => 15
)
[category_3] => Array
(
[count] => 18
[avg] => 17
)
)
我可能是误会了,但我觉得你想得太多了。只需使用for循环来构建主阵列:
<?php
$category = array (
0 => '9',
1 => '10',
2 => '11',
3 => '12'
);
$count = array (
0 => '12',
1 => '14',
2 => '16',
3 => '18'
);
$avg = array (
0 => '11',
1 => '13',
2 => '15',
3 => '17'
);
$final_array = array();
for($i=0;$i<count($category);$i++){
$final_array['category_'.$i] = array(
'count' => $count[$i],
'avg' => $avg[i]
);
}
print_r($final_array);
?>
另外,请记住,您的代码将抛出语法错误,因为最后一个元素后面不能跟逗号。我可能有误解,但我认为您考虑得太多了。只需使用for循环来构建主阵列:
<?php
$category = array (
0 => '9',
1 => '10',
2 => '11',
3 => '12'
);
$count = array (
0 => '12',
1 => '14',
2 => '16',
3 => '18'
);
$avg = array (
0 => '11',
1 => '13',
2 => '15',
3 => '17'
);
$final_array = array();
for($i=0;$i<count($category);$i++){
$final_array['category_'.$i] = array(
'count' => $count[$i],
'avg' => $avg[i]
);
}
print_r($final_array);
?>
另外,请记住,代码将抛出语法错误,因为最后一个元素后面不能跟逗号。函数调用无法执行类似操作,您需要手动循环。如果这会因为记录的数量而导致问题,那么您可能希望重新思考和重构
$res = array();
// category values are irrelevant, but it is easier than using array_keys
// (and never use for loops when you can use foreach: foreach can be 20% faster
foreach($category as $key=>$val)
{
// use manual concatenation and it is generally about 1.5% faster
// and clearer to your compatriots
$res['Category_'.$key] = array(
// since key maps to the same key for all, then simply use that
// for the lookup
/*
if you KNOW that there will always be a key in $count and $avg
then use the following:
*/
'count' => $count[$key],
'avg' => $avg[$key]
/*
otherwise you will need to use this:
'count' => isset($count[$key])?$count[$key]:0,
'avg' => isset($avg[$key])?$avg[$key]:0
*/
);
}
// $res now has everything you're looking for.
没有办法通过函数调用执行类似的操作,您需要手动循环。如果这会因为记录的数量而导致问题,那么您可能希望重新思考和重构
$res = array();
// category values are irrelevant, but it is easier than using array_keys
// (and never use for loops when you can use foreach: foreach can be 20% faster
foreach($category as $key=>$val)
{
// use manual concatenation and it is generally about 1.5% faster
// and clearer to your compatriots
$res['Category_'.$key] = array(
// since key maps to the same key for all, then simply use that
// for the lookup
/*
if you KNOW that there will always be a key in $count and $avg
then use the following:
*/
'count' => $count[$key],
'avg' => $avg[$key]
/*
otherwise you will need to use this:
'count' => isset($count[$key])?$count[$key]:0,
'avg' => isset($avg[$key])?$avg[$key]:0
*/
);
}
// $res now has everything you're looking for.
先生,你显然是阵列方面的天才。一、 显然,我不是。非常感谢。先生,你显然是阵列方面的天才。一、 显然,我不是。非常感谢你。