我有一个包含2个列的简单表:ID
和Name
。它看起来像这样:
License_ID License_Name
5 xxx
8 yyy
13 zzz
我想将此表格编写为数组,并希望在提供license_id
时能够找到license_name
。我怎么写这个数组?
编辑:我可以像提供的答案昵称一样编写数组,
$array = array(
'xxx' => 5,
'yyy' => 8,
'zzz' => 13
);
但我希望将license_id和license_name作为密钥,而不是使用license_name的值作为密钥。
答案 0 :(得分:3)
使用与许可证名称对应的键和与许可证ID对应的值形成一个数组,如下所示:
$sql = 'SELECT * FROM table'; // Optionally add a WHERE clause
$result = mysql_query( $sql);
$array = array();
while( $row = mysql_fetch_array( $result))
{
// Form the array
$array[ $row['License_Name'] ] = $row['License_ID'];
}
mysql_free_result( $result);
要省略表并使用全局变量,请使用相同的技术:
$array = array(
'xxx' => 5,
'yyy' => 8,
'zzz' => 13
);
现在,要查找许可证ID,您只需要:
$license_id = 8;
$id = $array[ $license_id ]; // $id = 'yyy';
编辑:这是另一种以更清晰的方式表示方式的方法:
$array = array(
array(
'license_id' => 5,
'license_name' => 'xxx'
),
array(
'license_id' => 8,
'license_name' => 'yyy'
),
array(
'license_id' => 13,
'license_name' => 'zzz'
)
);
然后,要在提供license_name时找到license_id,请循环查找结果:
$license_name = 'zzz';
foreach( $array as $entry)
{
if( $entry['license_name'] == $license_name)
{
echo 'Found ID of ' . $license_name . ' - ' . $entry['license_id'];
break;
}
}
OR,甚至更直接的防止循环的方法是修改上述技术,让每个子数组都包含license_name作为其键,如下所示:
$array = array(
'xxx' => array(
'license_id' => 5,
'license_name' => 'xxx'
),
'yyy' => array(
'license_id' => 8,
'license_name' => 'yyy'
),
'zzz' => array(
'license_id' => 13,
'license_name' => 'zzz'
)
);
现在,要查找license_id,您可以在知道license_name后直接执行:
$license_name = 'zzz';
$license_id = $array[ $license_name ]['license_id'];
答案 1 :(得分:0)
你知道那里有array_search,不是吗?我个人喜欢将数组键保存为ids或数值..所以在您的示例中$key=array_search('xxx',$myArr);
(其中id是键,名称是值)http://php.net/manual/en/function.array-search.php