Php 具有随机删除键值的多维数组,剩余最小值为1
我想创建一个数组,可以随机删除[id]键的内容,这些内容与[parent_id]相同 这是我的阵列: Array ( [0] => Array ( [parent_id] => 1 [id] => 286 ) [1] => Array ( [parent_id] => 286 [id] => 142 ) [2] => Array ( [parent_id] => 1 [id] => 287 ) [3] => Array ( [parent_id] => 1 [id] => 288 ) [4] => Array ( [parent_id] => 1 [id] => 289 ) [5] => Array ( [parent_id] => 289 [id] => 140 ) [6] => Array ( [parent_id] => 289 [id] => 143 ) [7] => Array ( [parent_id] => 289 [id] => 242 ) ) 我搞不懂的是如何将数组转换为: Array ( [0] => Array ( [parent_id] => 1 [id] => Array (286, 287, 288, 289) ) [1] => Array ( [parent_id] => 286 [id] => Array (142) ) [2] => Array ( [parent_id] => 289 [id] => Array (140, 143, 242) ) ) 排列 ( [0]=>阵列 ( [parent_id]=>1 [id]=>阵列(286287288289) ) [1] =>阵列 ( [家长id]=>286 [id]=>阵列(142) ) [2] =>阵列 ( [家长id]=>289 [id]=>阵列(140143242) ) ) 在这之后,我希望每个[id]数组中的每个父id只剩下一个idPhp 具有随机删除键值的多维数组,剩余最小值为1,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我想创建一个数组,可以随机删除[id]键的内容,这些内容与[parent_id]相同 这是我的阵列: Array ( [0] => Array ( [parent_id] => 1 [id] => 286 ) [1] => Array ( [parent_id] => 286 [id] => 142
如何实现这一点?如果结果中的键值无关紧要,最好使用
父id
作为键
$result = array();
foreach ($list as $entry) {
$parent = $entry['parent_id'];
// Make the base entry
if (!array_key_exists($parent, $result)) {
$result[$parent]['parent_id'] = $parent;
}
// Append this entry to the result
$result[$parent]['id'][] = $entry['id'];
}
编辑:如果你只想在一个循环中得到这个结果-我现在意识到你的意思可能是-你可以尝试以下方法:
$parentList = array();
foreach ($list as $item) {
// Make base entry, if it doesn't exist yet
if (!array_key_exists($item->parent_id, $parentList)) {
$parentList[$item->parent_id]['parent_id'] = $item->parent_id;
}
// Append the item id to the parent container
$parentList[$item->parent_id]['id'][] = $item->id;
}
是和否,@Jack。。。输出将是类似的。输入的类型是造成差异的原因。上面的代码是我编写的第一个版本,它转换了示例数组(包含父项和项id的数组数组)。后来我意识到转换其他源代码可能更有用,所以我在编辑中编写了第二个块。该函数使用原始输入(对象数组)作为源,而不是使用其他数组。这样,话题发起者就可以选择最适合他(或她?)的话题。
$parentList = array();
foreach ($list as $item) {
// Make base entry, if it doesn't exist yet
if (!array_key_exists($item->parent_id, $parentList)) {
$parentList[$item->parent_id]['parent_id'] = $item->parent_id;
}
// Append the item id to the parent container
$parentList[$item->parent_id]['id'][] = $item->id;
}