一个二维数组,
$ads_array = array (
0 =>
array (
'id' => '20',
'sortid' => '0',
'expired' => '2009-12-31 22:30:25',
'ad_url' => 'http://www.xxx.com/',
'ad_file' => '../upload/ads/1243839387.swf',
),
1 =>
array (
'id' => '33',
'sortid' => '16',
'expired' => '2009-09-15 16:46:42',
'ad_url' => 'http://www.xxx.com.cn/',
'ad_file' => '../upload/ads/1247647849.swf',
),
2 =>
array (
'id' => '41',
'sortid' => '0',
'expired' => '2009-12-31 22:31:13',
'ad_url' => 'http://www.xxx.com.cn/',
'ad_file' => '../upload/ads/1243839326.swf',
),
3 =>
array (
'id' => '47',
'sortid' => '16',
'expired' => '2009-12-31 23:31:11',
'ad_url' => 'http://www.xxx.com.cn/',
'ad_file' => '../upload/ads/1243839326.swf',
),
);这是一个广告展示程序,我想从这个二维数组里随机获取一个一维数组。但有一个条件,子数组里的sortid字段不为0的要优先获取,如是全为0则随机取一条。也就是说像上面的例子里期待只取到数组一、数组三的一条随机数据。不知可有什么方法?
$ads_array = array (
0 =>
array (
'id' => '20',
'sortid' => '0',
'expired' => '2009-12-31 22:30:25',
'ad_url' => 'http://www.xxx.com/',
'ad_file' => '../upload/ads/1243839387.swf',
),
1 =>
array (
'id' => '33',
'sortid' => '16',
'expired' => '2009-09-15 16:46:42',
'ad_url' => 'http://www.xxx.com.cn/',
'ad_file' => '../upload/ads/1247647849.swf',
),
2 =>
array (
'id' => '41',
'sortid' => '0',
'expired' => '2009-12-31 22:31:13',
'ad_url' => 'http://www.xxx.com.cn/',
'ad_file' => '../upload/ads/1243839326.swf',
),
3 =>
array (
'id' => '47',
'sortid' => '16',
'expired' => '2009-12-31 23:31:11',
'ad_url' => 'http://www.xxx.com.cn/',
'ad_file' => '../upload/ads/1243839326.swf',
),
);这是一个广告展示程序,我想从这个二维数组里随机获取一个一维数组。但有一个条件,子数组里的sortid字段不为0的要优先获取,如是全为0则随机取一条。也就是说像上面的例子里期待只取到数组一、数组三的一条随机数据。不知可有什么方法?
0 =>
array (
'id' => '20',
'sortid' => '0',
'expired' => '2009-12-31 22:30:25',
'ad_url' => 'http://www.xxx.com/',
'ad_file' => '../upload/ads/1243839387.swf',
),
1 =>
array (
'id' => '33',
'sortid' => '16',
'expired' => '2009-09-15 16:46:42',
'ad_url' => 'http://www.xxx.com.cn/',
'ad_file' => '../upload/ads/1247647849.swf',
),
2 =>
array (
'id' => '41',
'sortid' => '0',
'expired' => '2009-12-31 22:31:13',
'ad_url' => 'http://www.xxx.com.cn/',
'ad_file' => '../upload/ads/1243839326.swf',
),
3 =>
array (
'id' => '47',
'sortid' => '16',
'expired' => '2009-12-31 23:31:11',
'ad_url' => 'http://www.xxx.com.cn/',
'ad_file' => '../upload/ads/1243839326.swf',
),
);foreach($ads_array as $k=>$v)
{
$v['sortid'] === '0' ? ($n1[$k] = 1) : ($n2[$k] = 1);
}$k = array_rand(count($n2)?$n2:$n1,1);
print_r($ads_array[$k]);