我正在努力应对看似非常直接的任务。我已经看过并尝试了各种各样的功能和建议,希望可能有一些简单而实用的功能。我没有尝试过,这让我有了进行重组的逻辑。
我有一个很长的复杂数组。然而,我试图解决的逻辑问题非常简化如下:
$cost_type = Array
(
0 => "ISP2",
1 => "ISP3",
2 => "ISP4"
);
$supplier_name = Array
(
0 => "NAME-A",
1 => "NAME-B",
2 => "NAME-C"
);
$propertyid = Array
(
0 => "property1",
1 => "property2",
2 => "property2"
);
我需要将它转换为以下数组(注意两个数组的串联具有公共属性id .....
$property1
(
array['charges']
[0] =>IPS2
array ['names']
[0] =>NAME-A
)
$property2
(
array['charges']
[0] ->IPS3
[1] =>IPS4
array['names']
[0] =>NAME-B
[1] =>NAME-c
)
我在过去的几个小时里尝试过所有的东西,一个简单的解决方案完全避开了我。
答案 0 :(得分:1)
以下代码转换预期结果中的原始数组:
train_accuracy = accuracy.eval(feed_dict={
x: batch[0], y_: batch[1], keep_prob: 1.0, isTraining: False})
请在此处查看:https://eval.in/904473
当然,它假定数据的内容很多,但它应该适用于任意数量的项目。
如果您需要另一个变量中的属性,只需使用$res = array();
foreach($arr[2] as $k => $foo){ // foreach property
if(!isset($res[$foo])){ // add property if not yet in list
$res[$foo] = array(
'charges' => array($arr[0][$k]),
'names' => array($arr[1][$k])
);
}else{ // add new value to already existing property
$res[$foo]['charges'][] = $arr[0][$k];
$res[$foo]['names'][] = $arr[1][$k];
}
}
访问它。
答案 1 :(得分:1)
如果您可以像上面的评论中所说的那样加入三个数组,则此代码将生成您想要的外观 我使用property循环遍历数组,并将key作为键,以便在其他子数组中查找名称和费用。
$cost_type = Array
(
0 => "ISP2",
1 => "ISP3",
2 => "ISP4"
);
$supplier_name =Array
(
0 => "NAME-A",
1 => "NAME-B",
2 => "NAME-C"
);
$propertyid = Array
(
0 => "property1",
1 => "property2",
2 => "property2"
);
$arr[] = $cost_type;
$arr[] = $supplier_name;
$arr[] = $propertyid;
$result = array();
Foreach($arr[2] as $key => $prop){
$result[$prop]["charges"][] =$arr[0][$key];
$result[$prop]["names"][] = $arr[1][$key];
}
Var_dump($result);
答案 2 :(得分:1)
Run this code you will get smiler result as you want :
$twodimantion=array();
$properties=array('property1','property2','property3');
$charges=array('ISP2','ISP3','ISP4');
$names=array('NAME-A','NAME-B','NAME-C');
foreach ($properties as $key => $property) {
$twodimantion['charge'][$key]=$charges[$key];
$twodimantion['names'][$key]=$names[$key];
$twoarray[$property]=$twodimantion;
}
echo '<pre>';
print_r($twoarray);
echo '</pre>';
答案 3 :(得分:0)
我不能说我完全遵循你想要做的事情,但我认为这可能是你的方式的一部分。
尝试在PHP中重构数据时,创建一个空数组(或其他数据结构)来存储新数据通常很有帮助。然后,您将找到一种循环初始数据结构的方法,该结构允许您以正确的顺序将项目插入到重新格式化的结构中。
<?php
$properties = []; // Array to hold final result
// Loop over your initial inputs
foreach ($groupsOfValues as $groupName => $groupValues) {
$temp = []; // Array to hold each groupings reformatted data
// Loop over the items in one of the inputs
for ($i=0; $i<count($group) && $i<count($properties)+1; $i++) {
if (!is_array($temp[$groupName])) {
$temp[$groupName] = [];
}
$temp[$groupName][] = $group[$i];
}
$properties[] = $temp;
}