Php 按键值搜索数组的元素
我有下面的PHP代码,它通过键名搜索数组并返回与搜索结果相等的结果。出于好奇,我怎么能做到这一点,无论我搜索什么,结果都将是名称键值等于“A”的元素?简而言之,如何检索名称为“A”的元素Php 按键值搜索数组的元素,php,keyvaluepair,Php,Keyvaluepair,我有下面的PHP代码,它通过键名搜索数组并返回与搜索结果相等的结果。出于好奇,我怎么能做到这一点,无论我搜索什么,结果都将是名称键值等于“A”的元素?简而言之,如何检索名称为“A”的元素 $jSearchResult[] = $ajProducts[$i]->name = "A"; 我尝试了以下方法,但无效: $jSearchResult[] = $ajProducts[$i]->name = "A"; 请帮助我,因为我只是不知道如何通过键值检索数组的元素,但是我确信它一定非常简
$jSearchResult[] = $ajProducts[$i]->name = "A";
我尝试了以下方法,但无效:
$jSearchResult[] = $ajProducts[$i]->name = "A";
请帮助我,因为我只是不知道如何通过键值检索数组的元素,但是我确信它一定非常简单
$jSearchResult[] = $ajProducts[$i]->name = "A";
<?php
//DATA coming from the BROWSER
$sSearch = $_GET['search'];
//TURN it into UPPERCASE
strtoupper( $sSearch );
//GETTING from the TEXT FILE:
$sajProducts = file_get_contents( 'products.txt' );
$ajProducts = json_decode( $sajProducts );
$match_found = false;
//Collect all matching result in an array
$jSearchResult = array();
//LOOPING THROUGH THE ARRAY OF PRODUCTS
for ( $i=0; $i< count( $ajProducts ); $i++ ) {
if ( $sSearch == $ajProducts[$i]->name ) {
$jSearchResult[] = $ajProducts[$i]->name;
$match_found = true;
}
}
//if there is a match display the product
if ( $match_found ) {
echo json_encode ( $jSearchResult );
exit;
}
//if not display ALL products
else {
echo json_encode ( $ajProducts );
exit;
}
?>
如果要
匹配名称键
值等于“A”
的元素,则只需进行检查,名称键的值等于“A”
,如-
$jSearchResult[] = $ajProducts[$i]->name = "A";
foreach ($ajProducts as $ajProduct ) {
if ( "A" == $ajProduct->name ) {
$jSearchResult[] = $ajProduct->name;
$match_found = true;
}
}
如果要匹配名称键
值等于“A”
的元素,则只需进行检查,名称键的值等于“A”
,如-
$jSearchResult[] = $ajProducts[$i]->name = "A";
foreach ($ajProducts as $ajProduct ) {
if ( "A" == $ajProduct->name ) {
$jSearchResult[] = $ajProduct->name;
$match_found = true;
}
}
有一个php函数可以做到这一点:
$jSearchResult[] = $ajProducts[$i]->name = "A";
这将使$ajProducts
中的所有对象的name
属性设置为'A'
$jSearchResult[] = $ajProducts[$i]->name = "A";
要查看是否有任何结果:
$jSearchResult[] = $ajProducts[$i]->name = "A";
$matchFound = !empty($searchResult);
有一个php函数可以做到这一点:
$jSearchResult[] = $ajProducts[$i]->name = "A";
这将使$ajProducts
中的所有对象的name
属性设置为'A'
$jSearchResult[] = $ajProducts[$i]->name = "A";
要查看是否有任何结果:
$jSearchResult[] = $ajProducts[$i]->name = "A";
$matchFound = !empty($searchResult);
$array['A']
也许吧?但是由于我们看不到数组的结构…请转储($ajProducts)
并向我们展示,这样其他人就可以更好地理解$array['A']
?但是由于我们没有看到数组的结构,请dump($ajProducts)
并向我们展示,这样其他人可以更好地理解betterit是一个很好的解决方案。你能解释一下为什么仅仅写这篇文章是行不通的吗<代码>$jSearchResult=$ajProducts->name=='A'
因为$ajProducts
是一个数组,成员取消引用(箭头运算符)不适用于数组,只适用于对象name
是隐式产品类型对象的属性,表达式中需要该类型的变量才能有效。这是一个很好的解决方案。你能解释一下为什么仅仅写这篇文章是行不通的吗<代码>$jSearchResult=$ajProducts->name=='A'
因为$ajProducts
是一个数组,成员取消引用(箭头运算符)不适用于数组,只适用于对象name
是隐式产品类型的对象的属性,表达式中需要该类型的变量才能有效。