Php 在数组中添加在foreach循环中循环的项
所以我有一个Php 在数组中添加在foreach循环中循环的项,php,arrays,foreach,Php,Arrays,Foreach,所以我有一个foreach循环,它在一个项目数组中循环。checkIfSubCategorie()返回一个包含新项的数组 我想将所有这些项目都放在$subcategorien数组中。这很有效。问题是,这些项没有经过最初的foreach循环。这是否可能?如果可能,如何实现 foreach($subcategorien as $subcat) { //make array with all subcategorien $newarray = self::checkIfSubCate
foreach
循环,它在一个项目数组中循环。checkIfSubCategorie()
返回一个包含新项的数组
我想将所有这些项目都放在$subcategorien
数组中。这很有效。问题是,这些项没有经过最初的foreach循环。这是否可能?如果可能,如何实现
foreach($subcategorien as $subcat) {
//make array with all subcategorien
$newarray = self::checkIfSubCategorie($subcat);
if(is_array($newarray)) {
foreach($newarray as $a) {
// add item to subcategorien
array_push($subcategorien, $a);
}
}
}
这是初始foreach
循环之前的$subcategorien
数组:
array(2) {
[0]=> string(3) "701"
[1]=> string(3) "702"
}
array(3) {
[0]=> string(3) "701"
[1]=> string(3) "702"
[2]=> string(1) "8"
}
$newarray
的变量转储:
array(1) {
[0]=> string(1) "8"
}
bool(false)
这是foreach
循环之后的$subcategorien
数组:
array(2) {
[0]=> string(3) "701"
[1]=> string(3) "702"
}
array(3) {
[0]=> string(3) "701"
[1]=> string(3) "702"
[2]=> string(1) "8"
}
结果应该是:
array(3) {
[0]=> string(3) "701"
[1]=> string(3) "702"
[2]=> string(1) "8"
[3]=> string(1) "9"
}
从PHP手册
array\u push()
将在第一个参数不是数组时发出警告。这与创建新数组时的$var[]
行为不同
如果使用
array\u push()
将一个元素添加到数组中,最好使用$array[]=
,因为这样调用函数就没有开销。您要找的是调用递归函数。比如:
function getCategoryChildren($categoryParentId, $categories = array()) {
// TODO: query to get all the categories by their parents id
while ($row = $stmt->fetch_assoc()) {
$categories[] = $row['category_id'];
$categories = getCategoryChildren($row['category_id'], $categories);
}
return $categories;
}
$allCategories = getCategoryChildren(0);
请尝试与您的代码类似的方法:
$result_array = array();
foreach($subcategorien as $subcat){
//make array with all subcategorien
$newarray = checkIfSubCategorie($subcat);
$result_array[] = $subcat;
if(is_array($newarray)){
foreach($newarray as $a){
$result_array[] = $a;
}
}
}
在第4行之前,你能在第一个循环中转储$newarray的值吗?嗨,你能显示你数组的输出吗?所以,为了确保我理解,你想在第一个foreach中删除添加到$subcategorien的新值吗?@Epodax是的,这就是我想要的want@rahul增加了输出