arrays - 在将数组发送到 CakePHP 中的 View 之前,如何使用 Controller 中的 Set::功能来操作该数组?

标签 arrays cakephp

我有一个查询,要获取特定国家/地区的所有兼容手机,在我的 Controller 中,我使用 Set::extract 将杂乱的结果数组减少为产品名称数组。

$results = $this->国家/地区->兼容手机($国家/地区);
$兼容手机 = Set::extract('/p/product_name',$results);
$this->set('兼容手机',$兼容手机);

摘录整理了这个结果:

Array
(
    [0] => Array
        (
            [p] => Array
                (
                    [product_name] => Bat Phone
                )

        )

    [1] => Array
        (
            [p] => Array
                (
                    [product_name] => Premium Phone
                )

        )

    [2] => Array
        (
            [p] => Array
                (
                    [product_name] => Brick Phone
                )

        )
    [3] => Array
        (
            [p] => Array
                (
                    [product_name] => Satellite Phone
                )

        )

)

对此:

Array
(
    [0] => Bat Phone
    [1] => Premium Phone
    [2] => Brick Phone
    [3] => Satellite Phone
)

我将此数组传递到我的 View ,并有一些代码显示数组中每部手机的链接:

<ul>
  <?php echo (in_array("Bat Phone", $compatiblePhones)) ?    '<li><a href="#">Bat Phone</a></li>'    : '' ;?>
  <?php echo (in_array("Premium Phone", $compatiblePhones)) ?   '<li><a href="#">Premium Phone</a></li>'   : '' ;?>
  <?php echo (in_array("Brick Phone", $compatiblePhones)) ?    '<li><a href="#">Brick Phone</a></li>'    : '' ;?>
  <?php echo (in_array("Satellite Phone", $compatiblePhones)) ? '<li><a href="#">Satellite Phone</a></li>' : '' ;?>
</ul>

这是我的问题:卫星电话总是会被退回,因为它在任何地方都可以工作,但我只想在其他电话根本无法工作的情况下仅显示它。我想我可以在 View 端使用 in_array() 来做到这一点,但它本身就够困惑的了。

在将数组发送到 View 之前,如何使用 Controller 中的 Set::功能来操作数组?我还考虑过,如果数组包含完全正确的手机,我可以在我的 View 中查找它们,而不是进行困惑的 in_array() 设置。

谢谢。

最佳答案

如果您知道名称始终是“卫星电话”:

$otherPhones = Set::extract('/p[product_name!=Satellite Phone]/product_name', $results);

将为您提供除卫星电话之外的所有电话。然后你可以在你的 View 中执行以下操作:

<ul>
<?php
foreach ( /* loop through "other" phones */ )
{
    // echo them
}

if (empty($otherPhones))
{
    // echo the satellite phone
}
?>
</ul>

但我想,如果你知道它永远是“卫星电话”,你就可以不从数据库中获取它,它会更有效率......

关于arrays - 在将数组发送到 CakePHP 中的 View 之前,如何使用 Controller 中的 Set::功能来操作该数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1078433/

相关文章:

c - 返回 C 中未知大小的数组并使用终止值

javascript - 从 for 循环内部向数组添加元素

python - 使用同一数组中的另一个值作为索引替换 numpy 数组中的值

cakephp - 如何在 CakePHP 中跨多个表编写连接查询?

php - CakePHP 2.0 CakeLog 限制日志大小

mysql - 将另一个 Controller 的另一个字段添加到数组中

javascript - 如何从javascript中的另一个数组中删除数组

java - 将数组传递给方法

php - 使用 View CakePHP 2.8.x 时从多个表中删除记录

cakephp - 无法插入到蛋糕 PHP 脚手架后添加的新列