在 Cakephp 1.3 中检索一维数组中的数据
Retrieving data in unidimensional array in Cakephp 1.3
我正在使用 cakephp 1.3 从具有 城市 和 邮政编码 的 table 中提取数据,我想提取这两列以使用邮政编码填充下拉菜单 menu 'id' 和 town names as menu 'values'。
“find('list')”方法不可用,因为一些城镇具有相同的邮政编码并且 class 仅在采摘独特的价值,而不是得到:
Array
(
[800] => Darwin
[801] => Darwin
[810] => Allawa
)
我得到
Array
(
[800] => Darwin
[810] => Allawa
)
方法 find('all') 正在返回一个多维数组
Array
(
[0] => Array
(
[GeoPostcode] => Array
(
[state_id] => 26
[region] => Acton
)
)
[1] => Array
(
[GeoPostcode] => Array
(
[state_id] => 26
[region] => Ainslie
)
)
)
在不将输出减少为唯一数组键的情况下,在一维数组中获取所需数据的最佳解决方法是什么?像 :
Array ( [800] => Darwin [801] => Darwin [810] => Allawa )
您应该仍然可以使用 $Model->find('list')
执行此操作。
$this->Model->find(
'list',
array(
'fields' => array(
'postal_code',
'city_name'
),
'contain' => false
)
);
这应该 return 使用您选择的两个字段(邮政编码和城市名称)的列表结果集。
您的替代选择是 find('all')
:
$results = $this->Model->find(
'all',
array(
'conditions' => array( ... )
)
);
现在,您的数据结果中有这种格式:
$results = Array
(
[0] => Array
(
[ModelName] => Array
(
[id] => 1
[postal_code] => 800,
[city_name] => 'Darwin'
)
)
[1] => Array
(
[ModelName] => Array
(
[id] => 2
[postal_code] => 801,
[city_name] => 'Darwin'
)
)
[2] => Array
(
[ModelName] => Array
(
[id] => 3
[postal_code] => 810,
[city_name] => 'Allawa'
)
)
)
然后使用Cake中的Set
class提取一些数据:
$keys = Set::extract('/ModelName/postal_code', $results);
$values = Set::extract('/ModelName/city_name', $results);
/* Then some array_combine magic */
$list = array_combine($keys, $values);
现在你有了一个你想要的数组。虽然路途较长,但行得通。然后您可以将此变量传递给您的 Form::select()
助手以创建您的下拉列表。
希望对您有所帮助!
我正在使用 cakephp 1.3 从具有 城市 和 邮政编码 的 table 中提取数据,我想提取这两列以使用邮政编码填充下拉菜单 menu 'id' 和 town names as menu 'values'。
“find('list')”方法不可用,因为一些城镇具有相同的邮政编码并且 class 仅在采摘独特的价值,而不是得到:
Array
(
[800] => Darwin
[801] => Darwin
[810] => Allawa
)
我得到
Array
(
[800] => Darwin
[810] => Allawa
)
方法 find('all') 正在返回一个多维数组
Array
(
[0] => Array
(
[GeoPostcode] => Array
(
[state_id] => 26
[region] => Acton
)
)
[1] => Array
(
[GeoPostcode] => Array
(
[state_id] => 26
[region] => Ainslie
)
)
)
在不将输出减少为唯一数组键的情况下,在一维数组中获取所需数据的最佳解决方法是什么?像 :
Array ( [800] => Darwin [801] => Darwin [810] => Allawa )
您应该仍然可以使用 $Model->find('list')
执行此操作。
$this->Model->find(
'list',
array(
'fields' => array(
'postal_code',
'city_name'
),
'contain' => false
)
);
这应该 return 使用您选择的两个字段(邮政编码和城市名称)的列表结果集。
您的替代选择是 find('all')
:
$results = $this->Model->find(
'all',
array(
'conditions' => array( ... )
)
);
现在,您的数据结果中有这种格式:
$results = Array
(
[0] => Array
(
[ModelName] => Array
(
[id] => 1
[postal_code] => 800,
[city_name] => 'Darwin'
)
)
[1] => Array
(
[ModelName] => Array
(
[id] => 2
[postal_code] => 801,
[city_name] => 'Darwin'
)
)
[2] => Array
(
[ModelName] => Array
(
[id] => 3
[postal_code] => 810,
[city_name] => 'Allawa'
)
)
)
然后使用Cake中的Set
class提取一些数据:
$keys = Set::extract('/ModelName/postal_code', $results);
$values = Set::extract('/ModelName/city_name', $results);
/* Then some array_combine magic */
$list = array_combine($keys, $values);
现在你有了一个你想要的数组。虽然路途较长,但行得通。然后您可以将此变量传递给您的 Form::select()
助手以创建您的下拉列表。
希望对您有所帮助!