我正在尝试检索数据库中特定列的数字索引。我需要从数字和关联索引访问它,所以我需要获取两个。
以下是示例代码:
$data = mysqli_query($con, $sql) or die(mysql_error());
$student = mysqli_fetch_array($data) or die(mysql_error());
$index = array_search("columnName", array_keys($student));
无论我放入什么“columnName”,它总是返回0。我设法用一个循环或两个数组,一个数字和其他关联来解决这个问题,但我想知道为什么这不起作用......
答案 0 :(得分:2)
问题是您的值为0.因为0 ==' id'。但是您可以将第三个参数设置为true以进行严格匹配。所以它会是:
$index = array_search('columnName', array_keys($student), true);
答案 1 :(得分:1)
这个(array_search)可能会在失败或Boolean
值时返回integer(index of item)
false:
警告此函数可能返回布尔值FALSE,但也可能返回a 非布尔值,其值为FALSE。请阅读有关的部分 布尔值获取更多信息。使用===运算符进行测试 返回此函数的值。
例如,这将返回0
,但它是第一个索引(找到):
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('blue', $array); // 0
if(getType($key) == 'boolean'){
// not found
}
这里的结果是0
,如果它是integer
那么它就是第一项的索引。因此,请确保0
是否找到index
。您可以将第三个参数设置为true
以克服此问题:
严格如果第三个参数strict设置为TRUE则为 array_search()函数将搜索相同的元素 草垛。这意味着它还将检查针的类型 haystack和对象必须是同一个实例。
因此,使用严格的比较,您可以确保适当的结果:
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('blue', $array, true);
if($key !== false) {
// Found the index in $key
}
答案 2 :(得分:0)
这个怎么样?:
$arrayMap = array();
foreach( array_keys( $array ) as $index => $key ) {
$arrayMap[] = array(
'index' => $index,//position
'key' => $key,//text key
'value' => $array[$key] //value
);
}