【问题标题】:if one array element similar to request variable, then how to fetch another elements of array如果一个数组元素类似于请求变量,那么如何获取数组的另一个元素
【发布时间】:2012-09-28 09:45:41
【问题描述】:

我在问类似的问题compare request values to array - 这对我不起作用,我的情况完全不同

    $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] );

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

【问题讨论】:

  • “它不起作用” doesn't explain the problem 够了。您需要详细说明您的输入、预期和实际结果,或具体错误消息。

标签: php arrays get request


【解决方案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"}]

【讨论】:

  • lorga: 嘿,解决方案很棒,但是有一个问题,在比较时 unset 删除了一个数组元素,但是对于另一个元素比较像 $pn = 'test'检查'main'后显示为null,数组没有显示任何内容它在数组中显示为null
  • 你说你要删除那部分! i want to get another elements except to matched one
  • 更新了我的答案,你只需要复制主数组。
  • lorga: 是的,我想要除匹配元素之外的其他元素,并取消设置删除该元素。
猜你喜欢
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
相关资源
最近更新 更多