【问题标题】:How to remove matched value in array如何删除数组中的匹配值
【发布时间】:2021-04-02 09:39:33
【问题描述】:

我正在循环通过两个数组。 $wooProducts$data。两个数组看起来一样,都包含 WooCommerce 产品。

我的目标是循环通过$wooProducts 并从$data 中删除匹配的产品。 除了unset() 部分外,一切正常。知道如何使它工作吗?我也试过这个:unset($data[$matchedProduct]);

// Find function
function find($array, $key) {
    foreach ($array as $product) {
        if ($product["Name"] == $key) {
            return $product;
        }
    }
}

$updateProducts = [];
// Check if product already exist
foreach ($wooProducts as $wooProduct) {
    $matchedProduct = find($data, $wooProduct->post_title);
    if ($matchedProduct) {
        array_push($updateProducts, $matchedProduct);
        unset($data[$wooProduct]); // <---- Not working
    }
}

【问题讨论】:

  • 我不太了解 php,但是当您将 foreach $wooProducts 作为 $wooProduct 执行时,变量 $wooProduct 可能是一个值而不是索引。如果我的数组是 $wooProcuts ['cat', 'dog'] 我的猜测是 unset(data[wooProcuct]) 就像说 unset(data['cat']) 当你真的想要 unset(data[0])
  • 你尝试用 value 取消设置,需要用 key 取消设置,wooProduct 也是对象。对象不能是数组中的键

标签: php arrays loops unset


【解决方案1】:

你可以使用array_search()找到索引,然后你可以使用unset。

array_search($wooProduct->post_title, $data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-01
    • 2023-03-10
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多