所有
在我的aap中,我需要根据标签缩短图像。现在在第一个数组中有image标签,在第二个数组中是url。
-
$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 ) )
-
$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;
}
}