2011-08-01 11 views
0

strposを使用して、にqが含まれているかどうかを確認できるように、このforeachループを編集するにはどうすればよいですか? 結果配列にこれらの値が含まれます。2つの変数を持つ配列のforeachループの質問に関する簡単な質問。

array(
    0=>array(...), 
    1=>array(...), 
    2=>array(...) 
) 

これは、そのあなた」を意味:それは自動的にの形を取る -

$qは、あなたがあなたの$dataアレイ用のキーを定義していないannaまたはannまたはreas john

<?php 

$q = $_GET["q"]; 
if (!$q) return; 

$data = Array(
    Array(
     'label' => 'anna c13', 
     'category' => 'Products' 
    ), 
    Array(
     'label' => 'anders andersson', 
     'category' => 'People' 
    ), 
    Array(
     'label' => 'andreas johnson', 
     'category' => 'People' 
    ) 
); 

$result = array(); 
foreach ($data as $value) { 
    array_push($result, array(
     "label" => $value["label"], 
     "category" => $value["category"] 
    )); 
} 


$json = json_encode($result); 

echo $json; 
?> 
+1

の$ key'は数値インデックスが含まれていると '$の[値]は、配列が含まれているため、'あなたのループは動作しません。しかし、私はあなたが何をしようとしているのか分かりません。 'labels'と' categories'のリストを 'names'と' emails'のJSONに変換しますか?電子メールアドレスはどこから来たはずですか? – Paulpro

+0

何をしようとしていますか? '$ result'配列はどのように見えますか? – Shef

+0

すみません、私はより良い理解のために私の質問を更新しました。結果の配列には、 'label'に' q'がある値を含まなければなりません。 – EnexoOnoma

答えて

1

これは$ data内のすべての配列を出力します。ここで$ qは 'label'のどこかにあります。

<?php 

    if(!isset($_GET["q"])) return; 
    $q = $_GET["q"]; 

    $data = Array(
     Array(
      'label' => 'anna c13', 
      'category' => 'Products' 
     ), 
     Array(
      'label' => 'anders andersson', 
      'category' => 'People' 
     ), 
     Array(
      'label' => 'andreas johnson', 
      'category' => 'People' 
     ) 
    ); 

    $result = array(); 
    foreach ($data as $value) { 
     if(strpos($value['label'], $q) !== false) { 
      $result[] = $value; 
     } 
    } 


    $json = json_encode($result); 

    echo $json; 
    ?> 
+0

+1。私にそれを打つ! – Shef

+0

ありがとうございます。これはmysqlクエリよりも速いのですか?両方の方法で検索するデータ量が非常に大きくなります。 SQLクエリでは、私はMATCH AGAINSTを使用します。 – EnexoOnoma

+0

私はMATCH AGAINSTについてはわかりませんが、これをLIKEを使ったmysqlクエリと比較すると、mysqlはかなり速くなることがわかります。 –

0

かもしれintにstrtolowerを使用しています - それがおそらく失敗している理由です。

+0

'strtolower'だけがq変数にあります。あなたはその失敗をどのように知っていますか? – iLLin

+0

私は更新が必要なわけではないと思うので、私はstrtolowerを削除しました。 – EnexoOnoma

0
foreach ($data as $value) { 
    if(strpos($value['label'], $q) !== false){ 
     $result[] = $value; 
    } 
} 
+0

あなたの答えをありがとう。申し訳ありませんが私はあなたをアップアップすることはできません、これは私の低得点のためです。入力用にリモートファイルを使用する必要があるときは、jQuery関数で入力する必要がありますか? – EnexoOnoma

+0

@ JPampos:_ "リモートファイル入力"とはどういう意味ですか? – Shef

+0

上記の例のようにリモートファイルにjsonデータを格納することを意味します。それ以外の場合、json関数はjquery関数にあります – EnexoOnoma