php多维数组,存在则查找更新,不存在则插入

JSw*_*ete 2 php arrays search insert

我已经搜索过,但一无所获。

我想要一些关于如何搜索多维数组并在值存在时更新或在值不存在时插入的建议或指针。

例如。目前我用这些值创建了一个数组,如下所示:

Array
(
[0] => Array
    (
        [quantity] => 1
        [supplier_paypal] => paypalaccount1@paypal.com
        [supplier_price] => 10
    )

[1] => Array
    (
        [quantity] => 2
        [supplier_paypal] =>  paypalaccount2@paypal.com
        [supplier_price] => 20
    )

    )
Run Code Online (Sandbox Code Playgroud)

现在这很好,但它只是循环并且可以在数组中创建重复的电子邮件地址。我需要一些可以放在循环中的东西,用于搜索以查看电子邮件是否存在,如果存在,则只需将供应商价格相加即可。

任何帮助或想法?

这是我尝试过的:

 $arrIt = new RecursiveIteratorIterator(
 new RecursiveArrayIterator($this->data['payrecipient_data']));

foreach ($arrIt as $sub) {
$subArray = $arrIt->getSubIterator();
if ($subArray['supplier_paypal'] === $supplier_info['supplier_paypal']) {

    $this->data['payrecipient_dup'][] = iterator_to_array($subArray);
} else {
    $this->data['payrecipient_nondup'][] = iterator_to_array($subArray);
}
}
Run Code Online (Sandbox Code Playgroud)

这使我能够搜索数组并将其分成重复组和不重复组。

但是我不知道从哪里开始更新数组,所以我迷路了并被卡住了。

dec*_*eze 6

$needle = 'foo@bar.com';

$found = false;
foreach ($array as &$element) {
    if ($element['supplier_paypal'] == $needle) {
        // update some data
        $element['foo'] = 'bar';
        $found = true;
        break;
    }
}
unset($element);

if (!$found) {
    $array[] = array('supplier_paypal' => $needle, ...);
}
Run Code Online (Sandbox Code Playgroud)

有更优雅的方法来索引数据以更快地找到它,而无需每次都遍历整个事物,但这本质上是您正在寻找的基本算法。