我的PHP
代码如下:
$pairs = $read->select()
->from($eavTable,array('value','entity_id'))
->where('attribute_id=?',$ddId)
->where('store_id=?','0')
->distinct(true);
return $read->fetchPairs($pairs);
此代码返回包含字符串和整数键的PHP数组。 IE:
array(3) {
[40003]=> string(6) "246409"
["rootcat"] => string(1) "2"
["10000000888"]=> string(6) "246410"
}
我想当值超过8个字节时,或者当值不是数字时返回字符串。
我怎样才能指导" Zend返回完全关联数组?这样40003
也会被视为字符串?
在数据库中,这些值标记为varchar。
答案 0 :(得分:1)
你不能。在PHP中,如果索引完全表示为整数(最多PHP_INT_MAX
),那么即使您尝试用引号将其字符串化,它也是整数索引:
$array['40003'] = "246409";
$array['40003x'] = "246409";
var_dump($array);
array(2) {
[40003]=>
string(6) "246409"
["40003x"]=>
string(6) "246409"
}
或者通过类型转换:
foreach($array as $key => $value) {
$result[strval($key)] = $value;
}
var_dump($result);
相同的输出。
或者通过其他诡计:
echo serialize($array);
// a:1:{i:40003;s:6:"246409";}
//change to string index
$result = unserialize('a:1:{s:5:"40003";s:6:"246409";}');
var_dump($result);
相同的输出。