【问题标题】:Append additional element to existing array getting error将附加元素附加到现有数组出现错误
【发布时间】:2020-04-03 00:59:32
【问题描述】:

在我看来,这应该很简单,但由于某种原因,它让我变得更好,我一定是太累了,或者它太明显了。我有一个从数据库中获取的项目数组,我需要更新一些元素,并且我正在使用 for 循环遍历数组的每个元素,在这种情况下,它包含四个元素。

[16] => Array
        (
            [sku] => SKU14820
            [item] => Box of Shoes
            [desc] => Nice leather Shoes
            [price] => 66
        )

所以我创建了我的循环并开始遍历每个小数组,因为原始数组长度可能会有所不同,并且各个数组可能会有所不同,我正在使用 for 循环来准备我的语句以更新数据库的 mysqli。

因此,较小数组中的每个元素都需要分配一个 binding_param,所以我认为最简单的方法可能不是最好看的就是检查 isset,然后将绑定参数附加到该元素。

 for($x=0;$x < count($checked);$x++){
            $bind_type = array();
            $sku = $checked[$x]['sku'];
            if(isset($checked[$x]['sku'])){

             $bind_type[0] = 's';
             print_r($bind_type);
            $checked[$x]['sku'][] = $bind_type;
         }
   }

我不断收到此错误,我很困惑.. 非常感谢您的帮助,我怀疑这对我来说是一个明显的错误....

>>Array
>>(
>>    [0] => s
>>)
>>
>>
>>Fatal error:  Uncaught Error: [] operator not supported for strings

【问题讨论】:

  • 我认为$checked[$x]['sku'] 是一个字符串,而不是一个数组,对吧?你确定这行得通吗? $checked[$x]['sku'][] = $bind_type
  • 你能给我们展示一个你更新后的数组应该是什么样子的例子吗?是不是像这样:[16] => Array ([sku] => SKU14820 [item] => 鞋盒 [desc] => 漂亮的皮鞋 [price] => 66 [bind_type] => s)跨度>
  • 大概是这样3v4l.org/D6Y79
  • 我开车去上班,以为我可能已经修复了,但可惜没有.... 遍历数组中的每个元素并将 binding_type 准备好分配给准备好的语句以进行更新的想法。我将数组更改为关联数组而不是数字,但这仍然不起作用...
  • 觉得我的一分钱掉了

标签: php arrays for-loop append


【解决方案1】:

我认为在您的用例中使用array_map 会更干净。我不确定您希望如何查看修改后的数组。假设你想要这样的东西:

array(
    'sku' => array('a', 'SKU14820'),
    'item' => 'Box of Shoes',
    'desc' => 'Nice leather Shoes',
    'price' => 66
)

下面的代码应该为你做:

$checked = array_map(function($item) {
    if (isset($item['sku'])) {
        $item['sku'] = ['s', $item['sku']];
    }
    return $item;
}, $checked);

【讨论】:

  • 谢谢它给了我修复它所需的灰质震动我没有完全理解我在修改我的数组以包含新元素时所做的事情,您的回复为我指明了正确的方向。我得到的错误是有效的,因为我很愚蠢 - 大声笑
  • 没问题。很高兴知道我能帮上忙:)
猜你喜欢
  • 2018-09-02
  • 2021-12-26
  • 2014-06-27
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 2015-01-30
相关资源
最近更新 更多