У меня есть массив ($myArray
), которую я хочу изменить:PHP изменить массив с array_search и array_column
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"
}
Чтобы изменить $myArray
для того, чтобы заменить одну или несколько ссылок по $number
-value Я хотел использовать следующую строку
for($i = 0; $i < 2; $i++)
{
$myArray[array_search($number[$i], array_column($myArray, "0"))][1] = $links[$i];
}
Но это не сработает, оно устанавливает обе ссылки 100
и 200
к тому же значению (вторая ссылка)
Я написал этот код, который работает, но я хотел бы использовать другую линию вместо или, по крайней мере, сравнить Perfomance его
for($i = 0; $i < 2; $i++)
{
for($j = 0; $j < 2; $j++)
{
if($myArray[$j][0] == $number[$i])
{
$myArray[$j][1] = $links[$i];
}
}
}
Использование $number
-значение в качестве ключа сделало бы это намного проще, но это не вариант для меня.
EDIT после решения
В случае, если кто-нибудь хочет знать, обе версии идентичны alost быстро. 10000 работает каждый результат в этом время выполнения:
0.10158801078796
0.10160994529724
Хм, потому что PHP имеет только ассоциативные массивы и числовые массивы, притворяющиеся только числовыми, я думал, что это не имеет значения, см. этот пост: http : //stackoverflow.com/questions/37854038/php-numeric-array-order Но спасибо, я рассмотрю его – JRsz
Я проверил, ваш ответ работает. PHP иногда странный, по крайней мере для меня: D Я принял ваш ответ, поскольку он решил мою конкретную проблему, спасибо :) – JRsz