【发布时间】:2015-04-04 15:06:55
【问题描述】:
我不太擅长递归函数。我阅读了所有的论坛,并试图围绕需要做的事情来思考,我就是无法理解,而且我的时间不多了。所以我需要寻求帮助。
我有下面的数组。我试图让所有公司都在一个层面上。所以返回的结果是,第一个元素是元素 0,然后 all_child_companies 下的第一个节点是元素 1,以此类推。
<?php
// array(
// 'id' => '1',
// 'name' => 'Company 1',
// 'address_id' => '15',
// 'emp_size' => '0',
// 'parent_id' => '0',
// 'is_beta' => '0',
// 'owner_id' => '1',
// 'created_at' => '2015-04-02 03:25:32',
// 'updated_at' => '2015-04-02 03:25:32',
// 'deleted_at' => NULL,
// 'industry' => '',
// 'avatar_file_name' => NULL,
// 'avatar_file_size' => NULL,
// 'avatar_content_type' => NULL,
// 'avatar_updated_at' => NULL,
// 'address' => array(
// 'id' => '15',
// 'street1' => '111 something street',
// 'street2' => '',
// 'street3' => '',
// 'city' => 'houston',
// 'state' => '0',
// 'zip' => '',
// 'created_at' => '2015-04-02 03:25:32',
// 'updated_at' => '2015-04-02 03:25:32',
// 'deleted_at' => NULL,
// 'address_id' => '0',
// 'address_type' => '',
// 'country' => ''
// ),
// 'all_child_companies' => array(
// 0 => array(
// 'id' => '2',
// 'name' => 'Company 1',
// 'address_id' => '16',
// 'emp_size' => '55',
// 'parent_id' => '1',
// 'is_beta' => '1',
// 'owner_id' => '1',
// 'created_at' => '2015-04-02 03:25:32',
// 'updated_at' => '2015-04-02 03:25:32',
// 'deleted_at' => NULL,
// 'industry' => '',
// 'avatar_file_name' => NULL,
// 'avatar_file_size' => NULL,
// 'avatar_content_type' => NULL,
// 'avatar_updated_at' => NULL,
// 'address' => array(
// 'id' => '16',
// 'street1' => '222 something street',
// 'street2' => '',
// 'street3' => '',
// 'city' => 'tucson',
// 'state' => '0',
// 'zip' => '',
// 'created_at' => '2015-04-02 03:25:32',
// 'updated_at' => '2015-04-02 03:25:32',
// 'deleted_at' => NULL,
// 'address_id' => '0',
// 'address_type' => '',
// 'country' => ''
// ),
// 'all_child_companies' => array(
// 0 => array(
// 'id' => '3',
// 'name' => 'Company 2',
// 'address_id' => '17',
// 'emp_size' => '15',
// 'parent_id' => '2',
// 'is_beta' => '0',
// 'owner_id' => '1',
// 'created_at' => '2015-04-02 03:25:32',
// 'updated_at' => '2015-04-02 03:25:32',
// 'deleted_at' => NULL,
// 'industry' => '',
// 'avatar_file_name' => NULL,
// 'avatar_file_size' => NULL,
// 'avatar_content_type' => NULL,
// 'avatar_updated_at' => NULL,
// 'address' => array(
// 'id' => '17',
// 'street1' => '333 something street',
// 'street2' => '',
// 'street3' => '',
// 'city' => 'tempe',
// 'state' => '0',
// 'zip' => '',
// 'created_at' => '2015-04-02 03:25:32',
// 'updated_at' => '2015-04-02 03:25:32',
// 'deleted_at' => NULL,
// 'address_id' => '0',
// 'address_type' => '',
// 'country' => ''
// ),
// 'all_child_companies' => array(
// 0 => array(
// 'id' => '4',
// 'name' => 'Company 3',
// 'address_id' => '19',
// 'emp_size' => '100',
// 'parent_id' => '3',
// 'is_beta' => '0',
// 'owner_id' => '0',
// 'created_at' => '2015-04-02 05:24:34',
// 'updated_at' => '2015-04-02 05:24:34',
// 'deleted_at' => NULL,
// 'industry' => '',
// 'avatar_file_name' => NULL,
// 'avatar_file_size' => NULL,
// 'avatar_content_type' => NULL,
// 'avatar_updated_at' => NULL,
// 'address' => array(
// 'id' => '19',
// 'street1' => '333 something street',
// 'street2' => '',
// 'street3' => '',
// 'city' => 'phoenix',
// 'state' => '0',
// 'zip' => '85042',
// 'created_at' => '2015-04-02 05:24:34',
// 'updated_at' => '2015-04-02 05:24:34',
// 'deleted_at' => NULL,
// 'address_id' => '0',
// 'address_type' => '',
// 'country' => 'United States Of America'
// ),
// 'all_child_companies' => array(
//
// )
// )
// )
// )
// )
// )
// )
// )
提前感谢您的帮助。
我知道这不起作用,但这是我一直在想的..
/**
* @param $needle_key
* @param $array
* @return bool
*/
public static function array_search_key($needle_key = 'all_child_companies', $array)
{
if(isset($array['all_child_companies']) && !empty($array['all_child_companies'])){
return self::array_search_key($needle_key, $array['all_child_companies']);
}
foreach ($array AS $key => $value) {
if ($key == $needle_key) return $value;
if (is_array($value)) {
if (($result = self::array_search_key($needle_key, $value)) !== false)
return $result;
}
}
return false;
}
【问题讨论】:
-
到目前为止您尝试过什么?向我们展示您当前的代码:)
-
我用代码示例更新了问题。我不确定论坛是否会通知所有人更新..
-
它会通知。在我的脑海中,你需要一个 foreach 来完成你正在尝试的事情。