在此测试页https://wintoweb.com/sandbox/question_2.php上,访问者可以在数据库中进行搜索,并根据需要选中任意数量的复选框。单击[接受...]按钮后,我希望所有搜索的结果都显示在“到目前为止的选择”下。现在,仅显示上一次搜索。我尝试使用全局数组来存储先前搜索的结果,并在每次新搜索时将其递增。那就是我有问题的地方。
在文件顶部,我有:
<?php
global $all_authors;
array ($all_authors, '');
?>
在文件底部,我有:
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
if(isset($_GET['search'])){
//echo 'Search</br>';
} elseif(isset($_GET['display_this'])) {
echo getNames();
}
function getNames() {
$rets = '';
if(isset($_GET['choices']) and !empty($_GET['choices'])){
foreach($_GET['choices'] as $selected){
$rets .= $selected.' -- ';
}
//array_push($all_authors, $rets); // This is the problem
//print_r($allAuthors); // this too
echo '</br><b>Your selections so far :</b></br>';
}
return $rets;
}
?>
预期:将列出所有以前的搜索结果 实际:由于array_push()出现问题,无法执行。参见函数gatNames()
答案 0 :(得分:0)
您应该使数组在函数内部是全局的,在顶部:
$all_authors = array();
在底部:
function getNames() {
global $all_authors;
// Do the rest of the stuff
}
答案 1 :(得分:0)
您正在从$rets
函数返回getNames
,但没有使用它。您只需要使用此变量$rets
而不是全局变量即可。
if(isset($_GET['search'])){
//echo 'Search</br>';
} elseif(isset($_GET['display_this'])) {
$rets = getNames(); //The $rets will hold the value returned by your function getName().
if( !empty ( $rets ) ) {
echo '</br><b>Your selections so far :</b></br>';
echo $rets;
}
}
您可以从getNames
方法内部删除echo语句。
function getNames() {
$rets = '';
if(isset($_GET['choices']) and !empty($_GET['choices'])){
foreach($_GET['choices'] as $selected){
$rets .= $selected.' -- ';
}
}
return $rets;
}