【问题标题】:Pushing array into array inside of array将数组推入数组内部的数组
【发布时间】:2023-03-14 23:54:01
【问题描述】:

我正在尝试插入一个数组或(如果已经声明了一个)向其中添加元素。

$data 数组的 print_r 输出:

Array
(
    [0] => Array
        (
            [0] => 7727368
            [1] => Array
                (
                )

        )

    [1] => Array
        (
            [0] => 7727284
            [1] => Array
                (
                    [0] => Array
                        (
                            [0] => 7543419783
                        )

                )

        )

    [2] => Array
        (
            [0] => 7787473
            [1] => Array
                (
                    [0] => Array
                        (
                            [0] => 7771723347
                        )

                    [1] => Array
                        (
                            [0] => 8458457
                        )

                )

        )

)

PHP 代码:

  $idaukcji = $_POST['idaukcji'];
  $modid = $_POST['modid'];
  foreach($data as $item){
    foreach($item[1] as $subitem){
      if($subitem[0]==$idaukcji){
        if(array_key_exists('1',$subitem)){
          array_push($subitem[1],$modid);
        }
        else{
          array_push($subitem, array($modid));
        }
      }
      $tobase = base64_encode(serialize($item[1]));
      $sql="UPDATE data SET allegroaucnum='$tobase' WHERE wfnum = '$item[0]'";
      mysqli_query($conn,$sql) or die(mysqli_error($conn));
    }
  }

如果声明了最深嵌套数组的索引 [1],则脚本应检查是否存在现有数组,则应将 $modid 添加到该数组,如果没有,则使用 $modid 创建数组元素。

实际代码给出了我们在上面(在 print_r 中)可以看到的内容,但如果我添加

echo $subitem[1][0];

之后(在其他内部)

array_push($subitem, array($modid));

它确实返回了 $modid 值,但它在 print_r 中没有显示

提前感谢您的帮助。

【问题讨论】:

  • 要修改内部数组,请将它们设置为引用:foreach($data as &$item){ foreach($item[1] as &$subitem){
  • 数组推送可以将值添加到现有数组中。如果要将值分配给特定的数组索引,则需要使用 array[index][whatever] = value 显式执行
  • @splash58 谢谢!这有帮助!

标签: php array-push


【解决方案1】:

试试这个功能:

function flat_array($array, &$result) 
{
    if(!is_array($array)) {
        return $array;
    }
    foreach ($array as $key => $item) {
        if(is_array($item)) {
            unset($array[$key]);
            flat_array($item,  $result);
        } else {
            $result[] =  $item;
        }
    }
    return $array;
}

执行代码

flat_array($array, $result);
$result = array_unique($result); // if you want to make sure thar each value is unique

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2013-02-16
    • 2014-06-21
    • 2015-11-14
    • 2013-07-30
    • 2020-12-02
    • 2016-08-14
    相关资源
    最近更新 更多