我正在使用以下代码段返回数组中的第一个网址...
<?php
$custom_field = get_post_meta( $post->ID, '_images', true);
foreach ($custom_field["docs"] as $custom_fields) {
$url1 = $custom_fields["imgurl"];
echo $url1;
break;
}
?>
我现在需要做的是创建另一个名为$ url2的变量,它是来自数组其余部分的随机图像。
我还需要确保它不会重新选择用于$url1
的图像
任何人都有类似的例子我可以看一下吗?
答案 0 :(得分:1)
在这种情况下,您可以使用array_shift
然后array_rand
的组合:
$custom_field = get_post_meta($post->ID, '_images', true);
$first_url = array_shift($custom_field);
$second_url = $custom_field[array_rand($custom_field)];
首先,array_shift()
的角色取出第一个元素,然后将其转移到$first_url
。然后,array_rand()
只接受在第二次分配中使用的随机密钥。
或者,如果您不希望触及该数组,(不希望从unset()/array_shift
取消/删除任何元素):
$custom_field = get_post_meta($post->ID, '_images', true);
$first_url = reset($custom_field); // get the first element
$second_url = $custom_field[array_rand(array_slice($custom_field, 1))];
reset()
只获取第一个元素,但不删除它。然后是第二个操作,它只是从数组的第二个到最后一个获取一个随机密钥,所以第一个元素不包含在随机化中。
答案 1 :(得分:1)
这完全没有循环:
<?php
$custom_field = get_post_meta( $post->ID, '_images', true );
//Directly access first url in the array
$url1 = $custom_field["docs"][0]["imgurl"];
echo $url1;
//Remove first element from array to avoid duplicate random entry
unset($custom_field["docs"][0]);
if(count($custom_field["docs"]) > 0) {
//Generate a random index from first entry (0) until the element count in array - 1 (Because first element is index 0 and elementcount starts with 1 at first element!)
$randID = rand(0, count($custom_field["docs"]) - 1);
//Use random generated number to get second element out of array...
$url2 = $custom_field["docs"][$randID]["imgurl"];
}
?>