如何使用Zend的fetchPairs()获得完全关联的数组

时间:2014-06-24 18:48:46

标签: php zend-framework

我的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。

1 个答案:

答案 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);

相同的输出。