PHP多变量数组输出
我有一个简单的问题 我有一个数组,它有两个变量,我是这样定义的:PHP多变量数组输出,php,arrays,Php,Arrays,我有一个简单的问题 我有一个数组,它有两个变量,我是这样定义的: $sArray[0]['Name'] = $sName; $sArray[0]['ID'] = $sID; 上面是一个为sName和sID提供数据的循环。数据示例如下: Name: John Smith ID: 123 Name: Sue Smith ID:234 我希望以多选HTML输出sName数据,并将ID存储为值,将名称存储为选项显示。到目前为止,我下面的代码只输出列表中的第一个条目,因此循环是不正确的。所以,请帮忙。
$sArray[0]['Name'] = $sName;
$sArray[0]['ID'] = $sID;
上面是一个为sName和sID提供数据的循环。数据示例如下:
Name: John Smith ID: 123
Name: Sue Smith ID:234
我希望以多选HTML输出sName数据,并将ID存储为值,将名称存储为选项显示。到目前为止,我下面的代码只输出列表中的第一个条目,因此循环是不正确的。所以,请帮忙。:)
提前谢谢
更新:
根据请求,下面是填充数组的循环。它基本上读取包含名称和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);
}
}
正如我所看到的,您只需要一个foreach for your数组。看一看
foreach($sArray as $value){
echo '<option value="'.$value['ID'].'">'.$value['Name'].'</option>';
}
foreach($sArray作为$value){
回显'.$value['Name'].';
}
您可以使用foreach
循环,在循环内部,当前对象($value
)将包含ID
和Name
,可用于构建下拉列表
<?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>
实现这一点的更简洁的方法是使用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;
}
如果您需要更多解释,可以通过谷歌搜索:
PHP多维关联数组,或使用以下链接从官方PHP文档中读取:
尝试添加一些文本来解释您的答案。OP做错了什么?为什么这是实现它的一个好方法?通常情况下,只有代码的答案不是很有用。您没有增加数组。使用$sArray[],而不是$sArray[0]。如果我这样做,并按照您建议的方式输出,它将只显示第一个字母。我认为我遇到的问题是,我不太明白如何在数组中存储两个变量,并在以后检索它们。谢谢你,亨巴。这是另一个更新。。。最后,我将变量填充到各个数组中,并将它们组合起来输出。
<?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>
$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"