<?php
function filter($fst, $arr){
$new_arr=array();
for($i=0;$i<=(count($arr)-1);$i++){
if(substr($arr[$i], 0, 1) == $fst){
$new_arr[] = $fst;
}
}
return $new_arr;
}
$list = Array("Apparel","Associations","Building/Grounds","Building/Materials",
"Dispensing","Disposables","Distributors");
$new_list[]=filter("A", $list);
for($i=0;$i<=(count($new_list)-1);$i++){
echo '<li><a href="?id='.$i.'">'.$new_list[$i].'</a></li>';
}
?>
我创建了一个名为filter()的函数来过滤以“a”这样的字符开头的数组内容。它现在不起作用。
答案 0 :(得分:1)
<强>第一强>
不要使用
$new_list[] = filter("A", $list);
但只是
$new_list = filter("A", $list);
因为您的代码会尝试将$new_array
从filter()
放入数组变量$new_list
中的下一个自由索引
第二次
$new_arr[] = $fst;
是错误的,因为您将A
设置为不匹配的新数组值。请改用:
$new_arr[] = $arr[$i];
答案 1 :(得分:1)
首先,我假设你想要打印好的单词,而不是你要检查的字符? $new_arr[] = $fst;
应为$new_arr[] = $arr[$i];
其次,您将函数的结果数组添加到新数组中,而不是将数组赋值给变量。 $new_list[] =
应为$new_list =
。
这是您的代码的更新版本。我已经标记了我做出改变的地方..
function filter($fst, $arr){
$new_arr=array();
for($i=0;$i<=(count($arr)-1);$i++){
if(substr($arr[$i], 0, 1) == $fst){
$new_arr[] = $arr[$i]; <----- Changed here
}
}
return $new_arr;
}
$list = Array("Apparel","Associations","Building/Grounds","Building/Materials",
"Dispensing","Disposables","Distributors");
$new_list=filter("A", $list); <----- And changed here
for($i=0;$i<=(count($new_list)-1);$i++){
echo '<li><a href="?id='.$i.'">'.$new_list[$i].'</a></li>';
}
输出:
<li><a href="?id=0">Apparel</a></li>
<li><a href="?id=1">Associations</a></li>
答案 2 :(得分:0)
for($i=0;$i<=(count($arr)-1);$i++){
if(substr($arr[$i], 0, 1) == $fst){
//$new_arr[] = $fst; // <-- Bug is here
$new_arr[] = $arr[$i]; // Try this
}
}
另一个错误:
//$new_list[]=filter("A", $list); // This
$new_list = filter("A", $list); // Should be this
答案 3 :(得分:0)
foreach($arr as $word) {
// do something with $word
}
读取比C风格的for $i
循环