关于带有2个变量的数组的foreach循环问题的简单问题。 (带代码)

时间:2011-08-01 18:09:51

标签: php arrays foreach json

如何编辑此foreach循环,以便我可以使用strpos查看q中是否找到label? 结果数组将包含这些值。

$q可能是annaannreas 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;
?>

3 个答案:

答案 0 :(得分: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;
    ?>

答案 1 :(得分:0)

您尚未为$data数组定义键 - 因此它会自动采用以下形式:

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

这意味着你在int上使用strtolower - 这可能就是它失败的原因。

答案 2 :(得分:0)

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