我很犹豫要不要在这里问,但今天我对我面临的数组问题感到非常不知所措。
首先,我想指出,我既不是程序员也不是工程师(我来自设计部门,自学成才)。
但是今天我已经被困了几个小时,我不知道如何摆脱循环。我知道这有点尴尬,但我更喜欢"像我五岁一样解释它"风格的答案。
我对 MVC 架构(以及 OOP)也很陌生,虽然我没有 100% 赶上,但我在构建网站方面一直在缓慢但稳步地取得进展。
因此,当搜索表单从视图发送到控制器时,控制器会向模型发送一个结构如下的数组:
Array
(
[kind_ID] => 0
[type_ID] => 1
[city_ID] => 0
[address] => foo
[number] =>
[price] =>
// ... and so on (more fields with blank, zero or some data)
问题是,我不知道如何重建或清理数组以丢弃所有留空或零(或它们是空的?)的元素;维护所有非零值和所有相同的索引,因为使用 db->like() 函数时需要索引进行进一步的正确查询。
我已经仔细阅读了所有PHP文档,并且没有找到任何在数组中搜索"某些东西"并取消设置的函数。我已经尝试了几个数组函数,但找不到任何可以满足我要求的功能。
直奔主题:
// I'd like to convert this array:
Array
{
[kind_ID] => 0
[type_ID] => 1
[city_ID] => 0
[address] => foo
[number] =>
[price] => 25000
...
// To this one
Array
{
[type_ID] => 1
[address] => foo
[price] => 25000
...
我希望我已经足够清楚了,当然,告诉我是否需要给它一个不同的方法。
我一直在玩:
array_keys()
unset()
而且,我不知道如何循环到数组的末尾,或者如何基于它构建循环。
感谢您的时间,如果您尝试给我任何提示,请竖起大拇指。任何帮助将不胜感激!
干杯
我想你正在寻找这样的东西:
foreach($arr as $k => $v){
if( empty($v) || !isset($v) || $v == false ){
unset($arr[$k]);
}
}
所以$k是键,例如:"年龄",$v是值,例如:24
这样做是检查该数组键的值以查看它是空的(空字符串),根本没有设置或false(为假,零等),然后取消设置它。 你可能甚至不需要 !isset 部分,但我还是把它扔在那里,但如果它没有设置,你不能取消设置它,只是为了完成更多,所以你知道它的存在。
你走在正确的轨道上 unset(),你只需要一个推动......不错的工作:)