Php 关于带有2个变量的数组的foreach循环问题的简单问题。(附代码)
如何编辑此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' =
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;
}
}