【发布时间】:2016-07-03 20:34:08
【问题描述】:
假设我有一个具有以下结构的对象数组:
Array (
[0] => stdClass Object (
[category_id] => 5
[category_title] => Meetings
[category_slug] => meetings
[category_summary] => This is the meetings category
[category_user_id] => 1
[category_created] => 2016-03-17 12:41:42
[category_modified] => 2016-03-17 12:41:42
[category_status] => 1
[category_deleted] => NULL
),
[1] => stdClass Object (
[category_id] => 9
[category_title] => Seminars
[category_slug] => seminars
[category_summary] => This is the seminars category
[category_user_id] => 1
[category_created] => 2016-03-17 12:41:42
[category_modified] => 2016-03-17 12:41:42
[category_status] => 1
[category_deleted] => NULL
),
[2] => stdClass Object (
[category_id] => 15
[category_title] => Sporting Events
[category_slug] => sporting-events
[category_summary] => This is the sporting events category
[category_user_id] => 1
[category_created] => 2016-03-17 12:41:42
[category_modified] => 2016-03-17 12:41:42
[category_status] => 1
[category_deleted] => NULL
)
)
我想把它变成下面的结构来填充一个 HTML 选择:
Array (
[5] => Meetings,
[9] => Seminars,
[15] => Sporting Events
)
我总是这样做的方式是遍历原始数组并像这样构建一个新数组:
// $categories contains the original array of objects
$select_categories = array();
foreach($categories as $category) {
$select_categories[$category->category_id] = $category->category_title;
}
是否有更好/更简洁的方法来做到这一点,以便数组键是属性category_id,值是属性category_title?
【问题讨论】:
-
array_walk($categories, function (&$value) { $value = (array) $value; });`
-
试试这个
array_map(function ($yourArray) {return $array->category_title;}, $yourArray); -
对于你的新数组,你必须再次使用循环来迭代你为什么要这样做的项目;虽然您可以在发布的循环中填充 html;为什么要分两步完成?
-
array_column('category_title')应该很简单。 (尽管在您的示例中,如果您不使用 PHP 7,您可能需要将对象转换为数组) -
我应该澄清一下,数组中的索引需要是 category_id 属性
标签: php php-5.3 php-5.5 php-5.4 php-5.6