我有一个查询,要获取特定国家/地区的所有兼容手机,在我的 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/