开发者

Simple question on foreach loop question with array with 2 variables. (with code)

开发者 https://www.devze.com 2023-03-24 03:49 出处:网络
How can I edit this foreach loop so that I will be able to use strpos to look if q is found in the label ?

How can I edit this foreach loop so that I will be able to use strpos to look if q is found in the label ? The result array will contain those values.

$q may be anna or 开发者_开发技巧ann or 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;
?>


This will output every array in $data where $q is somewhere in '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;
    ?>


You haven't defined keys for your $data array - so it automatically take the form of:

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

This means that you're using strtolower on an int - so that's probably why it's failing.


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

精彩评论

暂无评论...
验证码 换一张
取 消