2011-06-16 9 views
0

私はjQueryオートコンプリート(http://code.google.com/p/jquery-autocomplete/)を使用しています。 MySQLコール。 PHPで作成された配列と文字列を使って作成された配列との間に根本的な違いがありますか?PHP配列の相違 - ループによって生成される文字列コンマで区切られた

たとえば、例のようにstringを使用して配列を作成すると、すべて正常に動作します。すなわち:

$items = array(
    "Great Bittern" => "Botaurus stellaris", 
    "Little Grebe" => "Tachybaptus ruficollis") 

私は以下のように配列を作成するとき、配列が認識されていないようだ、または多分アレイ内のデータは検索できません:MySQLの呼び出しがあるので

$items = array(); 
$query = mysql_query("MY QUERY"); 
while ($row = mysql_fetch_array($query)) 
{ 
array_push($data, $row['name']); 
} 

がそれですそれを含むPHPファイルの後に作られた?私は、ループ内で配列を作成する多くの、多くのバリエーションを試してきましたが、うまくいきませんでした。

アドバイスやヒントを事前にお寄せいただきありがとうございます。この上に私の髪を引き出します!

+0

第1のものは連想配列であり、第2のものは数値のものですが、第2の例では '$ items'に追加していません。あなたが正しく行うならば、 "普通の"配列とループに入れられた配列の間に違いはありません。 –

答えて

1

あなたの2つの例は基本的に異なるものです。

最初の例では、ほとんどの言語で「ハッシュ」または「マップ」と呼ばれるものがあります。ある文字列を別の文字列にマッピングする一連のキー/値ペア。 「Great Bittern」がキーとなり、「Botaurus stellaris」が腐食性の値になります。

2番目の方法では、シーケンシャルキーを使用した従来の数値索引配列を使用します。最初の例で行ったようにマップを作成することを妨げるものはありません。array_pushではなく、文字列キーを明示的に指定する必要があります。あなたのクエリが関連する2つの値を返すされている場合は、あなたが使うアプローチあなたのjQueryプラグインが受け取ることを期待データの種類に依存

$data[$row['key']] = $row['value']; 

ような何かをするだろう。キー/値マップ、または値の配列が必要ですか?

+0

@dwarbi私の例では、 '$ data [$ new_key] = $ new_value'を使って新しいキーに新しい値を代入するだけです。特定のキーがない場合は、 'array_push'を使用してください。重要な質問は、どの形式の配列をjQueryプラグインに提供する必要があるかです。 – meagar

+0

ありがとう - 私のフォローアップのコメントは馬鹿だと分かった。 – dwarbi

+0

だから私もこれを試してみました。私のループで、私は追加しました: $ items [$ row ['cityId']] = $ row ['name']; 配列をprint_rにすると、データは、例の配列と同じ形式になります。これはハッシュ/マップ配列ではないでしょうか?これはjQueryプラグインが期待するものです。これは、ページ/ロードの順序と関係があると思われる理由です。 – dwarbi