当我对数组进行排序时,使用 mysql 结果值填充 php 下拉选项显示 "Array"
populating php dropdown options with mysql result values shows "Array" when I sort() the array
编辑:当我注释掉 sort()
行时,现在它正在正确填充。 PHP 排序看起来就位,所以我不知道发生了什么。
我还必须在表单正上方插入一个冗余的 <div>
以从会话变量获取选项值数组或调用查询函数来填充它。
<?php
$food_options_arr = [];
if(!isset($_SESSION['food-options-arr'])){
$food_options_arr = get_food_options();
}
else{
$food_options_arr = get_food_options();
}
for($i=0; $i<count($food_options_arr); $i+=1){
//echo "{$food_options_arr[$i]}";
}
?>
来自 Python,这感觉很奇怪而且有点笨拙。
首先我认为这是我使用关联数组的问题,所以我使用线性数组来存储我的查询结果。
我的查询:
$sql = "SELECT species from lunchbox WHERE 1=1";
我在 S.O 的某处看到了。 1=1 不会影响性能,所以保留它。
当我在视图页面中调用查询函数并在调试器上逐步执行时,我可以清楚地看到数组包含正确的查询结果:
而且我还检查了数组中 $food
的每个值以确保它在那里。
然后我尝试填充以下下拉列表:
或者这个:
但我得到的只是“Array”的值作为下拉选项。
我的代码:
<form action="">
<label class="dropdown-label">Choose Food:</label>
<br>
<select id="food-dropdown" name="food-option">
<?php
$food_options_arr = array();
if(!isset($_SESSION['food-options-arr'])){
$food_options_arr = get_food_options();
}
else{
$food_options_arr = $_SESSION['food-options-arr'];
}
//$food_options_arr = array_unique($food_options_arr);
sort($food_options_arr);
foreach($food_options_arr as $food){
echo "<option value='". $food ."'>" . $food . "</option>";
}
?>
<option selected="selected">
<?php echo "$food_options_arr[0]";?>
</option>
</select>
</form>
echo "<option value='strtolower($sci_name)'>$sci_name</option>";
单引号不执行 PHP 代码,好的做法是关闭 PHP 并写入 html 并在其中回显有价值。
<option selected="selected">
<?php echo $food_options_arr[0];?>
</option>
最终起作用的是:
foreach($metabollite_options_arr as $sci_name){
$trim_name = trim($sci_name, "[]?");
str_replace("/", " ", $trim_name);
if($trim_name != ""){
echo "<option value={strtolower($trim_name)}>$trim_name</option>";
}
}
?>
所以使用{}
来包围变量。
但是,我无法 trim()
也无法 str_replace()
/
。
编辑:当我注释掉 sort()
行时,现在它正在正确填充。 PHP 排序看起来就位,所以我不知道发生了什么。
我还必须在表单正上方插入一个冗余的 <div>
以从会话变量获取选项值数组或调用查询函数来填充它。
<?php
$food_options_arr = [];
if(!isset($_SESSION['food-options-arr'])){
$food_options_arr = get_food_options();
}
else{
$food_options_arr = get_food_options();
}
for($i=0; $i<count($food_options_arr); $i+=1){
//echo "{$food_options_arr[$i]}";
}
?>
来自 Python,这感觉很奇怪而且有点笨拙。
首先我认为这是我使用关联数组的问题,所以我使用线性数组来存储我的查询结果。 我的查询:
$sql = "SELECT species from lunchbox WHERE 1=1";
我在 S.O 的某处看到了。 1=1 不会影响性能,所以保留它。
当我在视图页面中调用查询函数并在调试器上逐步执行时,我可以清楚地看到数组包含正确的查询结果:
而且我还检查了数组中 $food
的每个值以确保它在那里。
然后我尝试填充以下下拉列表:
或者这个:
但我得到的只是“Array”的值作为下拉选项。
我的代码:
<form action="">
<label class="dropdown-label">Choose Food:</label>
<br>
<select id="food-dropdown" name="food-option">
<?php
$food_options_arr = array();
if(!isset($_SESSION['food-options-arr'])){
$food_options_arr = get_food_options();
}
else{
$food_options_arr = $_SESSION['food-options-arr'];
}
//$food_options_arr = array_unique($food_options_arr);
sort($food_options_arr);
foreach($food_options_arr as $food){
echo "<option value='". $food ."'>" . $food . "</option>";
}
?>
<option selected="selected">
<?php echo "$food_options_arr[0]";?>
</option>
</select>
</form>
echo "<option value='strtolower($sci_name)'>$sci_name</option>";
单引号不执行 PHP 代码,好的做法是关闭 PHP 并写入 html 并在其中回显有价值。
<option selected="selected">
<?php echo $food_options_arr[0];?>
</option>
最终起作用的是:
foreach($metabollite_options_arr as $sci_name){
$trim_name = trim($sci_name, "[]?");
str_replace("/", " ", $trim_name);
if($trim_name != ""){
echo "<option value={strtolower($trim_name)}>$trim_name</option>";
}
}
?>
所以使用{}
来包围变量。
但是,我无法 trim()
也无法 str_replace()
/
。