Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 关于带有2个变量的数组的foreach循环问题的简单问题。(附代码)_Php_Arrays_Foreach_Json - Fatal编程技术网

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

Php 关于带有2个变量的数组的foreach循环问题的简单问题。(附代码),php,arrays,foreach,json,Php,Arrays,Foreach,Json,如何编辑此foreach循环,以便能够使用strpos查看q是否位于标签中? 结果数组将包含这些值 $q可能是anna或ann或reas john <?php $q = $_GET["q"]; if (!$q) return; $data = Array( Array( 'label' => 'anna c13', 'category' => 'Products' ), Array( 'label' =

如何编辑此foreach循环,以便能够使用
strpos
查看
q
是否位于
标签中?
结果数组将包含这些值


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

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

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

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

这将输出$q位于“label”中某处的$data中的每个数组

   <?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;
    ?>


循环不起作用,因为
$key
包含数字索引,
$value
包含数组。但是,我不知道你想做什么?将
标签
类别
的列表转换为
名称
电子邮件
的JSON?电子邮件地址应该来自哪里?你想做什么?
$result
数组应该是什么样子?对不起,为了更好地理解,我更新了我的问题。结果数组必须包含那些在
标签中找到的
q
值。q的例子是什么?可能会显示url。
$q
可能是
anna
ann
reas john
我看到的唯一
strtolower
是在q变量上。你怎么知道它失败了?我在更新中删除了strtolower,因为我认为这不是必须的。谢谢你。这比mysql查询快吗?这两种方式都会有大量的数据需要搜索。在SQL查询中,我使用了MATCH-on。我不确定MATCH-on是否正确,但我知道如果将其与使用LIKE的mysql查询进行比较,mysql会更快。谢谢您的回答。对不起,我不能投票给你,这是因为我的分数低。当需要将远程文件用于输入而不是将它们放在jQuery函数中时?@JPampos:您所说的“远程文件用于输入”是什么意思?我的意思是将json数据放在远程文件中,就像上面的示例一样。在另一种情况下,json位于jquery中function@JPampos:在这种情况下,您必须在JavaScript上运行循环。然而,这是另一个问题,你要么想出来,要么至少试着去想,然后在这里用你的尝试问另一个问题。
foreach ($data as $value) {
    if(strpos($value['label'], $q) !== false){
        $result[] = $value;
    }
}