【发布时间】:2020-12-19 17:24:50
【问题描述】:
我有一个基于到达客人的动态 PHP 生成数组 ($mapHitArriving),结果如下:
[0] => Array
(
[id] => 1098
[source] => 31
[name] => Steve test1
[date] => 2020-12-19
[dateLast] => 2020-12-20
[cost] => 250
[unitno] => 1
[utitle] => Queen Plus Room
)
[1] => Array
(
[id] => 1099
[source] => 31
[name] => Steve Test2
[date] => 2020-12-19
[dateLast] => 2020-12-20
[cost] => 250
[unitno] => 3
[utitle] => Queen Plus Room
)
如果 [unitno] 存在,我正在尝试分配变量。该变量基于单元号,并且具有单元号的值和一个并列的“a”,因为我们的目标是到达的客人。研究让我考虑使用 array_search 并定位“unitno”的索引列。
使用以下只会产生 1 个结果。仅创建 unit3 的变量。
if(array_search(1,array_column($mapHitArriving, 'unitno'))== TRUE) { $unit1 = '1a'; };
if(array_search(2,array_column($mapHitArriving, 'unitno'))== TRUE) { $unit2 = '2a'; };
if(array_search(3,array_column($mapHitArriving, 'unitno'))== TRUE) { $unit3 = '3a'; };
if(array_search(4,array_column($mapHitArriving, 'unitno'))== TRUE) { $unit4 = '4a'; };
if(array_search(5,array_column($mapHitArriving, 'unitno'))== TRUE) { $unit5 = '5a'; };
if(array_search(6,array_column($mapHitArriving, 'unitno'))== TRUE) { $unit6 = '6a'; };
if(array_search(7,array_column($mapHitArriving, 'unitno'))== TRUE) { $unit7 = '7a'; };
为什么只有 [unitno] 的第二个实例创建它的结果?由于它们是独立的 array_search 条件,我期待 unit1 和 unit3 的结果。
我是否应该以不同的方式进行搜索和分配作为最佳做法?
编辑:添加对与遇到的问题相关的Identical vs Equal 运算符的引用。
编辑 2:将比较引入到其他数组时,原始逻辑似乎失败了。最初,我们查看是否有客人到达(数组:$mapHitArriving - 结果:单元 id 与 'a' 结合)。然后我们看看谁在离开(数组:$mapHitDeparting - 结果:'1d'),最后谁既不是到达也不是离开,哪个是留下(数组:$mapHitStaying - 结果:没有合并的字母,只有单位 id)。似乎第一个条件评估为 TRUE,因此其他条件无法执行。当初始数组有一些结果时,这种情况不存在,所以我相信即使为空(?)我也需要声明数组:
if(array_search(1,array_column($mapHitArriving, 'unitno'))!== FALSE) { $unit1 = '1a'; }
elseif (array_search(1,array_column($mapHitDeparting,'unitno'))!== FALSE) { $unit1 = '1d'; }
elseif (array_search(1,array_column($mapHitStaying,'unitno'))!== FALSE) { $unit1 = '1'; }
【问题讨论】: