PHP alter array带有array\搜索和array\列
我有一个数组(PHP alter array带有array\搜索和array\列,php,arrays,search,Php,Arrays,Search,我有一个数组($myArray),我想更改它: array(2) { [0]=> array(2) { [0]=> string(3) "100" [1]=> string(9) "fancyLink" } [1]=> array(2) { [0]=> string(3) "200" [1]=> string(10) "fanyLink2" } } 我有两个具有以下结构的
$myArray
),我想更改它:
array(2) {
[0]=>
array(2) {
[0]=>
string(3) "100"
[1]=>
string(9) "fancyLink"
}
[1]=>
array(2) {
[0]=>
string(3) "200"
[1]=>
string(10) "fanyLink2"
}
}
我有两个具有以下结构的POST数组。
第一个数组$number
:
array(2) {
[0]=>
string(3) "100"
[1]=>
string(3) "200"
}
第二个数组$links
:
array(2) {
[0]=>
string(12) "newFancyLink"
[1]=>
string(13) "newFancyLink2"
}
要根据$number
-值更改$myArray
以替换一个或多个链接,我想使用以下行
for($i = 0; $i < 2; $i++)
{
$myArray[array_search($number[$i], array_column($myArray, "0"))][1] = $links[$i];
}
使用$number
-值作为一个键将使这变得更容易,但这不是我的选择
解决后编辑
如果有人想知道,这两个版本几乎完全相同。此运行时中每次运行10000次,结果如下:
0.10158801078796
0.10160994529724
使用
array\u map
和array\u walk
功能的解决方案:
$numLinks = array_map(null, $number, $links);
// you may also iterate via a regular 'foreach' loop
array_walk($myArray, function(&$v, $k) use($numLinks){
if ($v[0] == $numLinks[$k][0]) $v[1] = $numLinks[$k][1];
});
print_r($myArray);
输出:
Array
(
[0] => Array
(
[0] => 100
[1] => newFancyLink
)
[1] => Array
(
[0] => 200
[1] => newFancyLink2
)
)
使用
array\u map
和array\u walk
功能的解决方案:
$numLinks = array_map(null, $number, $links);
// you may also iterate via a regular 'foreach' loop
array_walk($myArray, function(&$v, $k) use($numLinks){
if ($v[0] == $numLinks[$k][0]) $v[1] = $numLinks[$k][1];
});
print_r($myArray);
输出:
Array
(
[0] => Array
(
[0] => 100
[1] => newFancyLink
)
[1] => Array
(
[0] => 200
[1] => newFancyLink2
)
)
也许array\u列($myArray,0”)
应该改为array\u列($myArray,0)
(因为它不是关联数组)?这样看来对我很管用
从
列键
要返回的值的列。此值可能是要检索的列的整数键,也可能是关联数组或属性名的字符串键名。返回完整的数组或对象也可以为NULL(这与index_键一起用于重新索引数组)
也许array\u列($myArray,0”)
应该改为array\u列($myArray,0)
(因为它不是关联数组)?这样看来对我很管用
从
列键
要返回的值的列。此值可能是要检索的列的整数键,也可能是关联数组或属性名的字符串键名。返回完整的数组或对象也可以为NULL(这与index_键一起用于重新索引数组)
嗯,这可能行得通,但我已经有了一些工作代码,我只是好奇为什么我的第一次尝试不起作用,因为据我所知它应该……这可能行得通——它很好。对于代码,
array\u column
函数的第二个参数-该值可能是要检索的列的整数键,也可能是关联数组或属性名的字符串键名。但是您已经将一个整数键指定为stringHm,因为PHP只有关联数组,而数字数组假装只有数字,我认为这无关紧要,请参阅本文:stackoverflow.com/questions/37854038/PHP-numeric-array-order,但谢谢您,我会研究它:)PHP有时很奇怪……嗯,这可能行得通,但我已经有了一些工作代码,我只是好奇为什么我的第一次尝试不起作用,因为据我所知它应该……这可能行得通——它工作得很好。对于代码,array\u column
函数的第二个参数-该值可能是要检索的列的整数键,也可能是关联数组或属性名的字符串键名。但是您已经将一个整数键指定为stringHm,因为PHP只有关联数组,而数字数组假装只有数字,我认为这无关紧要,请参阅本文:stackoverflow.com/questions/37854038/PHP-numeric-array-order,但谢谢您,我会研究它:)PHP有时很奇怪……嗯,因为PHP只有关联数组和数字数组,所以我认为这无关紧要,请看这篇文章:谢谢你,我会检查itI,你的答案是正确的。PHP有时很奇怪,至少对我来说是这样的:D我接受了你的答案,因为它解决了我的特殊问题,谢谢:)嗯,因为PHP只有关联数组和数字数组,假装只是数字数组,我想这没关系,请看这篇文章:但是谢谢你,我会仔细检查的,你的答案是正确的。PHP有时很奇怪,至少对我来说是这样的:D我接受了你的答案,因为它解决了我的特殊问题,谢谢:)