过滤平面数组,其中前导整数在另一个平面数组中找到
我需要将两个数组相交,其中给定值的前导数字在另一个数组中找到。
$A = [
'104-20_140.1',
'104-10_136.1',
'104-40_121.1',
'104-41_122.1',
'200-42_951.1',
'200-43_952.1',
'200-44_123.1',
'200-45_124.1',
'300-46_125.1',
'300-47_126.1',
'300-48_127.1',
'300-49_128.1',
'380-56_125.1',
'380-57_126.1',
'380-58_127.1',
'380-59_128.1',
];
$B = ['200', '300'];
我需要两次查看数组 A 的值的开头。前任。 [0] => 104-20_140 并查看开头的“104”是否存在于数组 B 中。如果不存在,数组 A 将从结果数组 C 中删除它。
数组 A 和的输出B应该有:
[
'200-42_951.1',
'200-43_952.1',
'200-44_123.1',
'200-45_124.1',
'300-46_125.1',
'300-47_126.1',
'300-48_127.1',
'300-49_128.1',
]
I need to intersect two arrays where the leading number of a given value is found in another array.
$A = [
'104-20_140.1',
'104-10_136.1',
'104-40_121.1',
'104-41_122.1',
'200-42_951.1',
'200-43_952.1',
'200-44_123.1',
'200-45_124.1',
'300-46_125.1',
'300-47_126.1',
'300-48_127.1',
'300-49_128.1',
'380-56_125.1',
'380-57_126.1',
'380-58_127.1',
'380-59_128.1',
];
$B = ['200', '300'];
I need two look at Array A's beginning of the value. Ex. [0] => 104-20_140 and see if the beginning '104' it exists in Array B. If not Array A shall remove it from the result array C.
The output with Array A and B should have:
[
'200-42_951.1',
'200-43_952.1',
'200-44_123.1',
'200-45_124.1',
'300-46_125.1',
'300-47_126.1',
'300-48_127.1',
'300-49_128.1',
]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个:
键盘上的示例
Try this:
example on codepad
很可能,您真正需要的是 array_uintersect。这将提供提供自定义回调的选项,其中包含如何检查值是否相交的逻辑。
https://www.php.net/manual/en/function。 array-uintersect.php
在回调中,您需要使用 substr 或其中一个 preg 函数解析第一个“-”之前的第一部分。
Chances are, what you really need is array_uintersect. This will give the option to provide a custom callback which contains the logic on how to check if values intersect.
https://www.php.net/manual/en/function.array-uintersect.php
In the callback, you will need to parse out first section before the first "-" using substr or one of the preg functions.
通过使用基本循环,您可以通过平面白名单数组以线性时间复杂度快速过滤输入数组,并且仅使用在白名单中找到整个前导整数的值填充结果数组。
代码:(演示)
You can filter your input array by your flat whitelist array swiftly with linear time complexity by using a basic loop and only populating the result array with values where the whole leading integer is found in the whitelist.
Code: (Demo)