-1

我在问类似的问题,将请求值与数组进行比较-它对我不起作用,我的情况完全不同

    $mkt =   array(
        array( 
            'title' => "Photos", 
            'iconlink' => "http://example.com/xyz.png",
            'pkg' => 'test' 
        ),
        array( 
            'title' => "code",
            'iconlink' => "http://example.com/xyz.png",
            'pkg' => 'main' 
        ),
        array( 
            'title' => "code",
            'iconlink' => "http://example.com/xyz.png",
            'pkg' => 'main' 
        ));

我在这个问题中有逻辑问题,问题是我通过$_REQUEST变量获取值,然后我将此请求值与数组 pkg 元素进行比较。如果比较是真的,那么我想得到另一个元素,除了匹配的元素。在此建议中,我正在使用 unset 删除匹配的元素的键,并且所有数组都指向新变量,它工作但不适用于数组的第一个元素,当我将请求变量与数组的第一个元素进行比较时,它显示为null :

 $mkt = array();
$newArray = $mkt;

foreach ($newArray as $key => $value ) {

    if (in_array($pn, $mkt, true)) {
        unset($newArray[$key]);
    }
}

$rand_ad = array_rand( $newArray, 1 );

echo json_encode( $newArray[$rand_ad] );

请看看这个问题,非常感谢我。

4

1 回答 1

1

在每个值中循环,如果$pn与该循环相等,pkg则未设置unset该元素:

$pn = 'main';
$newArray = $mkt;
foreach ($newArray as $key => $val) {
    if ($pn == $val['pkg']) {
        unset($newArray[$key]);
    }
}
echo json_encode($newArray);
// [{"title":"Photos","iconlink":"http:\/\/example.com\/xyz.png","pkg":"test"}]
于 2012-09-28T09:57:16.153 回答