2012-03-25 7 views
0

私はこのような3列ありますなぜarray_merge_recursiveはこのように機能しますか?

第一

Array 
(
    [0695] => Array 
     (
      [loan_number] => 0695 
      [start_date] => 2011-12-25 
     ) 
) 

第二

Array 
(
    [0695] => Array 
     (
      [name] => '' 
      [address] => '' 
     ) 
) 

第三

Array 
(
    [0695] => Array 
     (
      [items] => Array 
       (
        [0] => Array 
         (
          [item] => '' 
          [qty] => '' 
          [price] => '' 
         ) 
       ) 
     ) 
) 

array_merge_recursive(array1,array2,array3)は生成します。

が、配列のキーは、この

Array 
(
    [1685] => Array 
     (
      [loan_number] => 1685 
      [start_date] => 2011-12-25 
     ) 
) 

Array 
(
    [1685] => Array 
     (
      [name] => '' 
      [address] => '' 
     ) 
) 

Array 
(
    [1685] => Array 
     (
      [items] => Array 
       (
        [0] => Array 
         (
          [item] => '' 
          [qty] => '' 
          [price] => '' 
         ) 
       ) 
     ) 
) 

のように、なぜこの出来事とどのようにこれを阻止し、最初の1として結果を得るために、任意のアイデアこの

Array 
(
    [0] => Array 
     (
      [loan_number] => 1685 
      [start_date] => 2011-12-25 
     ) 

    [1] => Array 
     (
      [name] => '' 
      [address] => '' 
     ) 

    [2] => Array 
     (
      [items] => Array 
       (
        [0] => Array 
         (
          [item] => '' 
          [qty] => '' 
          [price] => '' 
         ) 
       ) 
     ) 
) 

のように、この農産物結果である場合には? documentationから

答えて

2

、しかし、配列が同じ数値キーを持っている場合、後で値が元の値を上書きしませんが、追加されます。

「0695」は数値キーではなく「1685」です。

このページのfirst comment(実際にはほとんどのコメント)には回避策が記載されています。

+0

私は最初に関数を使用しようとしましたが、私は関数呼び出しをしてからcodeigniterを使用しました。500内部サーバーエラー –

+2

あなたは問題が正しいと思われますが、あなたの説明が気に入らないようです。 '0695'はもちろん' var_dump(is_numeric(0695));で簡単にチェックできる数値で、 'true'を出力します。実際の問題は、Gihanaが2つの文字列 "0695"と "1685"をキーとして使用した可能性があることです。これらの2つの文字列のうち、後者はPHPによってキーとして使用されると整数に変換されます。私は個人的にこれをバグ、または少なくともPHP開発者の愚かさと考えています。もう一度、 'string'ではなく' integer'を出力する 'var_dump(gettype(key(array(" 1685 "=> null)))'でチェックすることができます。 – Basti

+1

確かに、私は "0695は数字キー**ではありません**"と言いました。しかしそれは完全な話です、はい。 – JJJ

関連する問題