【发布时间】:2018-01-20 03:02:27
【问题描述】:
这是我的$array 的样子
Array
(
[0] => Array
(
[id] => 1
[SKU] => SKU_1
[ProductIDRef] => 45645-12
)
[1] => Array
(
[id] => 2
[SKU] => SKU_2
[ProductIDRef] => 43445-45
)
[2] => Array
(
[id] => 3
[SKU] => SKU_2
[ProductIDRef] =>
)
)
正如您在数组[1] 中看到的,它包含与数组[2] 中相同的SKU 值。
但问题是,即使数组[2] 与数组[1] 具有相同的SKU,数组[2] 没有ProductIDRef 的值。
我要做的是在我的foreach 循环中引用以前的数组——在上面的示例中,数组[1] 需要传递给数组[2]。
如果找到与上一次迭代相同的 SKU 值 (SKU_2),则插入缺失的 (或 NULL) ProductIDRef IN Array [2] 导致:
[2] => Array
(
[id] => 3
[SKU] => SKU_2
[ProductIDRef] => 43445-45
)
用foreach循环它,使用&$修改原来的$array
foreach($array as $key => &$value)
{
// if previous SKU value is found . . .
// $value['ProductIDref'] = $previousProductIDRefValue;
}
我尝试了常见的foreach 策略,在循环之前设置$f = 0;,并在循环结束之前立即使用$f+; 递增它。
$f = 0;
foreach($array as $key => &$value)
{
$value['customkey'] = $f;
$f++;
}
这可行,并像这样返回$array:
Array
(
[0] => Array
(
[id] => 1
[ProductID] => 182040460699
[SKU] => SKU_1
[ProductIDRef] => 132438205662
[customkey] => 1
)
[1] => Array
(
[id] => 2
[ProductID] => 182040460699
[SKU] => SKU_2
[ProductIDRef] => 132438205662
[customkey] => 2
)
[2] => Array
(
[id] => 3
[ProductID] => 182040460699
[SKU] => SKU_3
[ProductIDRef] =>
[customkey] => 3
)
)
我可以有条件地为我的数组设置新值,或者修改现有值
$value['customkey'] = $f;
if ($f == 2) {
///// set new `key => value` pair in Array [2]
// $value['status'] = 'unpublished';
///// modify the value of ProductIDRef in Array [2]
// $value['ProductIDRef'] = 'inserted_value';
}
$f++;
但是像$value['ProductIDRef'] = $value[1]['ProductIDRef']; 这样的操作是行不通的。
这正是我尝试测试 php &$ 引用运算符的功能。此外,即使它失败了,这个测试也假设我 知道我希望在索引数组中引用并获取它的值 --- 而不是我实际尝试做的是搜索或引用数组中的每个 SKU 和 ProductIDRef 键以检测配对并插入它的值。
有没有办法使用 &$ foreach 循环来做到这一点,或者我必须做一些不同的事情,例如拆分数组并单独引用它们(关于如何最好地做到这一点的建议也将被接受) .
【问题讨论】:
标签: php arrays loops foreach reference