我有一个简单的查询。
我有一个数组,它有两个变量,我用这个方式定义:
$sArray[0]['Name'] = $sName;
$sArray[0]['ID'] = $sID;
以上是一个循环,它为sName和sID提供数据。数据示例如下:
Name: John Smith ID: 123
Name: Sue Smith ID:234
我希望在多选HTML中输出sName数据,并将ID存储为值,将Name存储为选项显示。到目前为止我下面的代码只输出列表中的第一个条目,因此循环不正确。所以,请帮忙。 :)
<select class="form-select" multiple id="SelectName" name="name_list[]">
<?php
$selectLength = count($sArray);
for ($j=0 ; $j<$selectLength ; $j++) {
foreach ($sArray[$j] as $value) {
echo"<option value=$value name='name_list[]'>$value</option>"?>
<?php
}
} ?>
</select>
下面是数组内容的转储:
array(1) { [0]=> array(2) { ["Name"]=> string(3) "Sue" ["ID"]=> string(3) "234" } } array(1) { [0]=> array(2) { ["Name"]=> string(4) "John" ["ID"]=> string(3) "123" } }
提前致谢。
更新: 根据要求,下面是填充数组的循环。它基本上读取一个包含Name和ID数据的XML文件,并将其放在数组中。
$fetchdata = simplexml_load_string($xml);
foreach ($elm->res as $list) {
$Team = $Agentlist->xpath('team[@name="Stock"]');
if (count($Team) >= 1) {
$fName = (string)$list->fName;
$ID = (string)$list->ID;
$sArray[0]['Name'] = $fName;
$sArray[0]['ID'] = $ID;
var_dump($sArray);
}
}
答案 0 :(得分:1)
正如我所看到的,你需要的只是一个foreach for you array。看看
foreach($sArray as $value){
echo '<option value="'.$value['ID'].'">'.$value['Name'].'</option>';
}
答案 1 :(得分:0)
您可以使用foreach
循环并在循环内部,当前对象($value
)将包含ID
和Name
,您可以使用它来构建下拉列表< / p>
<?php
$sArray[0]['Name'] = 'John';
$sArray[0]['ID'] = '123';
$sArray[1]['Name'] = 'Sue';
$sArray[1]['ID'] = '234';
?>
<select class="form-select" multiple id="SelectName" name="name_list[]">
<?php
foreach ($sArray as $value) {
echo'<option value="'.$value['ID'].'" name="name_list[]">'.$value['Name'].'</option>';
}
?>
</select>
答案 2 :(得分:0)
实现这一目标的更简洁方法是使用ID作为具有用户数据的数组的键。但是,如果您无法控制数组结构,则只需将ID提取为任何其他值。 这样,您的阵列将更轻,更易于阅读。 您还应该创建一个输出函数,以防需要多次创建选择框,以便重复使用它。
示例:强>
$user_list[$id]['first_name'] = 'John';
$user_list[$id]['last_name'] = 'Doe';
function select_user($user_list=[], $name='user_list', $multiple=''){
$select = '<select name="'.$name.'" '.$multiple.'>'; //use attribute multiple for multiselect
foreach($user_list as $user_key=>$user){
$user_ID = $user_key; // Option 1: $user_ID as Key
$user_ID = $user['ID']; // Option 2: $user_ID as Value
$select .= '<option value="'.$user_ID.'">'.$user['first_name'].' '.$user['last_name'].'</option>';
}
$select .= '</select>';
return $select;
}
然后只需在您想要的地方运行此功能:
$user_list = get_users_from_DataBase(); // example function for getting all users from DB
echo select_user($user_list); // Simple Select box
echo select_user($user_list,'user_list[]','multiple'); // Select Box with custom array name[]* & with attribute "multiple"
如果您需要更多解释,请访问Google:
PHP多维关联数组或使用以下官方PHP文档中的链接读取: http://php.net/manual/en/language.types.array.php 强>