2016-07-04 6 views
0

をarray_column。 最初の配列$number

array(2) { 
    [0]=> 
    string(3) "100" 
    [1]=> 
    string(3) "200" 
} 

と二番目の配列$links

array(2) { 
    [0]=> 
    string(12) "newFancyLink" 
    [1]=> 
    string(13) "newFancyLink2" 
} 

私は次の行を使用していた$number - 値に応じて1つまたは複数のリンクを交換するために$myArrayを変更します

for($i = 0; $i < 2; $i++) 
{ 
    $myArray[array_search($number[$i], array_column($myArray, "0"))][1] = $links[$i]; 
} 

これは機能しませんが、の両方のリンクを設定します同じ値にと200(第2リンク)

I作品このコードを書いたが、私は代わりに、他のラインを使用したいか、少なくともその使用

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 

答えて

1

array_column($myArray, "0")代わりarray_column($myArray, 0)(あるべきです連想配列ではない)?そうすれば、それは私のために働くようです。値の列を返すようにPHP-manual

array array_column (array $input , mixed $column_key [, mixed $index_key = null ]) 

column_key

から

。この値は、取得したい列の整数キーでもよいし、連想配列またはプロパティ名の文字列キー名でもよい。完全な配列やオブジェクトを返す場合は、NULLにすることもできます(これは、index_keyと一緒に配列を再インデックスすると便利です)。

+0

PHPは連想配列と数値配列だけしか数値ではないので、問題はないと思っています。 ://stackoverflow.com/questions/37854038/php-numeric-array-order ありがとうございます、私はそれを調べます – JRsz

+0

私はチェックして、あなたの答えが動作します。私にとってPHPは時々奇妙です:D 私の問題を解決したので答えを受け入れました、ありがとう:) – JRsz

1

array_maparray_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 
     ) 
) 
+0

これはうまくいくかもしれませんが、私はすでにいくつかの作業コードを持っていて、なぜ私の最初の試行がうまくいかなかったのか分かりません... – JRsz

+0

*これはうまく動作します* 。あなたのコードでは、 'array_column'関数の2番目の引数 - *この値は、検索したい列の整数キーでもよいし、連想配列やプロパティ名*の文字列キー名でもよい。しかし、あなたは文字列として整数のキーを指定しています – RomanPerekhrest

+0

Hm、PHPは連想配列しか持たず、数字配列は数値ではないと思っていましたので、問題ではないと思っていました。この記事を見てください:stackoverflow.com/questions/37854038/php-numeric- array-orderしかし、ありがとうございます、私はそれを調べます:) PHPは奇妙な場合があります... – JRsz

関連する問題