我有以下数组。
$ar = array("apple:3","banana:2","canopule:6","grapes:5","cherry:8");如何检查以下变量
$a = "grapes";在数组中(在本例中为grapes:5),如果是,则返回匹配的字符串。也就是说,“葡萄: 5”
如果它不在列表中(例如,匹配“草莓”),返回“草莓:未找到”。
我有这个:
for($i = 0; $i < count($ar); $i++) {
list($name,$count)=explode(":",$ar[$i]);
if($a==$name)
echo "$a : $count";
else
echo "$a : not found!";
}如果匹配的话,它就能正常工作。但如果不是,我会
草莓:没找到!
它返回每一个假案例,而不是只返回一个。
发布于 2012-10-06 17:35:48
就像这样:
$ar=array("apple:3","banana:2","canopule:6","grapes:5","cherry:8");
$a = "strawberry";
$result = '';
for($i=0;$i<count($ar);$i++){
list($name,$count)=explode(":",$ar[$i]);
if($a == $name){
$result = "$a : $count";
break;
}
}
if($result){
echo $result;
} else {
echo $a." : Not found";
}只要检查循环中是否有什么内容,如果是,打印结果,如果没有添加,没有找到。
发布于 2012-10-06 18:11:53
好吧,如果您没有被强制使用这样的数组,并且您是出于教育目的,那么尝试关联数组:那么代码看起来非常简单:
$ar = array("apple" => 3,"banana" => 2,"canopule" => 6,"grapes" => 5,"cherry" => 8);
$a = "grapes";
echo isset($ar[$a]) ? "$a : ".$ar[$a] : "$a : not found";我知道你不是在问这个问题,但我想说的是,有时候想出存储数据的方法比想出新的算法要简单得多。
发布于 2012-10-06 17:41:55
另一种使用foreach和substr的方法。
$ar = array("apple:3","banana:2","canopule:6","grapes:5","cherry:8");
$a = "cherry";
$result = $a . ": not found";
foreach ($ar as $fruit) {
if (substr($fruit,0,strpos($fruit,":")) == $a) {
$result = $a . ": " . substr($fruit,strpos($fruit,":") + 1);
break;
}
}
echo $result;foreach迭代数组中的每个元素(也可以像foreach ($ar as $num => $fruit)一样用于区分键和值)。使用substr而不是explode只是为了说明分割像您这样的复合值的另一种方法。为了查找冒号的出现,字符串从开始使用chars拆分到n表示提取水果名的run1,使用chars n+1拆分到提取计数值的run2的末尾。记住,字符串中字符的索引从0开始。
https://stackoverflow.com/questions/12762134
复制相似问题