Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP alter array带有array\搜索和array\列_Php_Arrays_Search - Fatal编程技术网

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我接受了你的答案,因为它解决了我的特殊问题,谢谢:)