PHP Marge 2单个数组中的数组


PHP Marge 2 Array in single array

所有

在我的aap中,我需要根据标签缩短图像。现在在第一个数组中有image标签,在第二个数组中是url。

  1. $results_tag数组

    Array
    (
        [0] => stdClass Object
        (
            [meta_value] => Tag 2
        )        
    )
    Array
    (
        [0] => stdClass Object
        (
            [meta_value] => Tag 1
        )
        [1] => stdClass Object
        (
            [meta_value] => Tag 3
        )  
    )
    
  2. $results_url数组

     Array
        (
            [0] => stdClass Object
                (
                    [meta_value] => formidable/madness_beach.jpg
                )
        )
        Array
        (
            [0] => stdClass Object
            (
                [meta_value] => formidable/adfish_beachchair1.jpg
            )
            [1] => stdClass Object
            (
                [meta_value] => formidable/madness_boat1.jpg
            )
    )
    

现在,我真正想要的是

Array
(
[Tag 2] => [formidable/madness_beach.jpg]
[Tag 1] => [formidable/adfish_beachchair1.jpg]
[Tag 3] => [formidable/madness_boat1.jpg]
)

所以,使用这个我可以短图像的标签。

我试过

$results_tag = array_merge_recursive($results_tag,$results_url);

但是没有得到我想要的输出。

提前感谢!!

我假设元素的数量已知为$N。

$results = array();
for ( $i = 0; $i < $N; ++$i ) $results[$results_tag[$i]->meta_value] = $results_url[$i]->meta_value;

这样就可以了。

$result = array();
$len = count($results_tag);
while($len--) $result[$results_tag[$i]->meta_value] = $results_url[$i]->meta_value;
 <?php 
  $results_tag_one =  array(0 => array('meta_value' => 'Tag 2'));
  $results_tag_two =  array(0 => array('meta_value' => 'Tag 1'),1 => array('meta_value' => 'Tag 3'));
  $results_tag = array_merge($results_tag_one,$results_tag_two);
  $results_url_one =  array(0 => array('meta_value' => 'formidable/madness_beach.jpg'));
  $results_url_two =  array(0 => array('meta_value' => 'formidable/adfish_beachchair1.jpg'),1 => array('meta_value' => 'formidable/madness_boat1.jpg'));
  $results_url = array_merge($results_url_one,$results_url_two);
  $final = array();
  $i = 0;
  foreach ($results_url as $url_data){
    $final[$results_tag[$i]['meta_value']] = $results_url[$i]['meta_value'];
    $i++;
  }
  echo "<pre>";
  print_r($final);
  echo "</pre>";
  exit;

欢呼

function flatten($tags, $urls, &$result) {
  if (is_array($tags))
    while (sizeof($tags)>0) {
      $tagschld=array_shift($tags);
      $urlschld=array_shift($urls);
      flatten($tagschld, $urlschld, $result);
    }
  else $result[$tags->meta_value]=$urls->meta_value;
}
$result=array();
flatten($results_tag, $results_url, $result);
print_r($result);

据我所知,没有内置函数可以基于一个属性将两个对象数组转换为一个关联数组。

您可以实现这样的东西,假设您有数组键之间的对应关系:

$results = array();
foreach($results_tag as $i => $item)
{
    if(is_array($item){
       foreach($item as $j => $value) {
          $results[$value->meta_value] = $results_url[$i][$j]->meta_value;
       }
    } else {
       $results[$value->meta_value] = $results_url[$i]->meta_value;
    }
}