在Python中如果我有2个列表说:
l1 = ['a', 'b', 'c', 'd']
l2 = ['c', 'd', 'e']
Run Code Online (Sandbox Code Playgroud)
有没有办法找出他们有多少元素相同.在这种情况下它将是2(c和d)
我知道我可以做一个嵌套循环但是没有内置函数,就像php中的array_intersect函数一样
谢谢
我正在为我的目录设计一个包引擎。在这里,您可以将一定数量的产品添加到套餐中并享受折扣。当您订购产品时,脚本必须检测哪些包裹交易适用于您的订单。
这是我的代码:
// packages
$packages["package1"] = array(1,1,2);
$packages["package2"] = array(1,2);
//orderlist
$orderlist = array(1,1,2,1,2,2);
// put the order list in a temp array
$temp_product_array = $orderlist;
foreach($packages as $pname => $package_array)
{
$no_more_package = 0;
do
{
// put the package products in a temp array
$temp_package_array = $package_array;
$is_packages_array = array_intersect($temp_package_array,$temp_product_array);
// if all package values are present
if(count($is_packages_array) == count($temp_package_array))
{
// add package name
$packages_in_order[] = $pname;
// filter the package out of the product list but …Run Code Online (Sandbox Code Playgroud) $master = ['111' => 'foo', '124' => 'bar', '133' => 'baz'];
$check = ['111' => 14, '133' => 23 ]';
我想从中删除所有$master不存在的键$check。因此,此示例中的结果应为:
$newMaster = ['111' => 'foo', '133' => 'baz'];
任何想法如何做到这一点?提前致谢。
我正在使用 2 个数组。第一个数组来自 CSV 文件的数据,另一个数组是来自 API 的响应。
是否可以使用数组 1 中的匹配值来过滤数组 2?
数组 1 示例
[
["B00CEEZ57S"],
["B002QJZADK"],
["B001EHL2UK"],
["B003FSTNB6"],
]
Run Code Online (Sandbox Code Playgroud)
数组 2 示例
[
[
"name" => "Jonathan Franzen: Purity (Hardcover); 2015 Edition",
"ASIN" => "B002QJZADK"
],
[
"name" => "Cardinal Gates Outdoor Child Safety Gate, Brown",
"ASIN" => "B00CE8C7SO"
],
[
"name" => "Sauder Edge Water 71.88\" Bookcase Estate Black Finish",
"ASIN" => "B001EHL2UK"
],
[
"name" => "The Pioneer Woman 82695.03R Cowboy Rustic 8\" Rosewood Handle Can Opener, …Run Code Online (Sandbox Code Playgroud) 测试脚本
$i = 0;
array_uintersect(['foo', 'bar'], ['baz', 'qux'], function($a, $b) use (&$i) {
print_r([$a, $b, $i++]);
});
Run Code Online (Sandbox Code Playgroud)
实际结果
Array
(
[0] => bar
[1] => foo
[2] => 0
)
Array
(
[0] => qux
[1] => baz
[2] => 1
)
Array
(
[0] => bar
[1] => qux
[2] => 2
)
Array
(
[0] => bar
[1] => foo
[2] => 3
)
Run Code Online (Sandbox Code Playgroud)
预期结果
Array
(
[0] => foo
[1] => baz
[2] => 0
)
Array …Run Code Online (Sandbox Code Playgroud) 我正在创建一个分面搜索,我正在尝试array_intersect比较数组并找到匹配的输入.
问题是我随时会有可变数量的数组,具体取决于用户选择的过滤器:
$array_1, $array_2, $array_3 等等...
如何array_intersect在这种意义上创建一个动态的函数?
这就是我尝试过的:
$next_array = 0;
for($i = 0; $i < $array_count; $i++) {
$next_array++;
if ($i == 0) {
$full_array = ${array_.$i};
} else {
if(!empty(${cvp_array.$next_array})) {
$full_array = array_intersect($full_array, ${cvp_array_.$next_array});
}
}
}
Run Code Online (Sandbox Code Playgroud)
-------------编辑-------------
我会尝试更多地缩小我的目标:
如果用户单击三个过滤器,则会生成三个阵列,每个阵列都有单独的结果:
Array_1 ( [0] => 2, [1] => 4, [2] => 6 )
Array_2 ( [0] => 1, [1] => 4, [2] => 6 )
Array_3 ( [0] => 6, [1] => 7, [2] …
是否有任何类似于"array_intersect"的函数,但它在模式不区分大小写并忽略波浪线?
array_intersect PHP函数将数组元素与===进行比较,因此我没有得到预期的结果.
例如,我想要这个代码:
$array1 = array("a" => "gréen", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
Run Code Online (Sandbox Code Playgroud)
输出gréen和红色.在默认的array_intersect函数中,建议使用红色(正常原因===).
有解决方案吗
先感谢您
我有两个数组,我需要比较它并从array1返回匹配的值.请参考下面的代码,
$array1 = array("a" => "Green", "Red", "Blue");
$array2 = array("b" => "grEEn", "yellow", "red");
$result = array_intersect(array_map('strtolower', $array1), array_map('strtolower', $array2));
print_r($result);
Run Code Online (Sandbox Code Playgroud)
我的结果是,
Array
(
[a] => green
[0] => red
)
Run Code Online (Sandbox Code Playgroud)
但我期望的结果是我想从array1得到它像:
Array
(
[a] => Green
[0] => Red
)
Run Code Online (Sandbox Code Playgroud) 我有两个阵列如图所示
//array 1
Array
(
[0] => 223
[1] => 216
)
/array 2
Array
(
[221] => Bakers
[220] => Construction
[223] => Information Technology
[216] => Jewellery
[217] => Photography
[222] => Retailers
)
Run Code Online (Sandbox Code Playgroud)
我想要第一个数组的键(值)与第二个数组(键)匹配的文本.
预期结果:
Information Technology, Jewellery
Run Code Online (Sandbox Code Playgroud) 好的我有两组手机号码(来自mysql)我需要处理,问题是我需要从结果中删除重复的数字.
有人告诉我"array_intersect",但我对这些事情并不擅长,我在PHP网站上看不到任何好的例子.
任何帮助或建议表示赞赏谢谢:)
对于我的代码可能有什么问题,我已经没有想法了。这个特定的类接受一个数组并将其与另一个数组进行检查以获取公共值。然后它通过 Final_post_vars_keys() 函数提供对通用值的访问。但每当我运行代码时,我都会收到错误(在标题中)。
<?php
class PostVarsKeys {
private $general_keys = array("name", "email", "custom phone" , "lastname" , "firstname", "fname", "lname", "phone" , "emailaddress" ,
"phonenumber");
private $post_vars_keys = array();
public function __construct($post_keys){
$counter=0;
foreach($post_keys as $key => $value):
$this->post_vars_keys[$counter++] = $key;
endforeach;
}
public function final_post_vars_keys(){
return $final_keys = array_intersect($this->general_keys, $this->post_vars_keys);
}
}
Run Code Online (Sandbox Code Playgroud) PHP Catchable fatal error: Argument 2 passed to NUI::recArrInterKey() must be an array, string given我当前在尝试递归地相交多维数组(灰/白列表)时收到错误。
$foo['contact']['im']['provider']由于某种我无法弄清楚的原因,它似乎在该部分上绊倒了?
这是我正在使用的白名单数组 ($array2) 示例
Array
(
[location] => false
[network_name] => false
[interests] => false
[last_name] => false
[url] => false
[significant_other] => false
[network_domains] => false
[contact] => Array
(
[im] => Array
(
[provider] => false
)
[email_addresses] => false
)
)
Run Code Online (Sandbox Code Playgroud)
以及方法
/**
* Recursive array intersect key
*/
private static function recArrInterKey(array $array1, array $array2)
{
$array1 = array_intersect_key($array1, …Run Code Online (Sandbox Code Playgroud) 我正在尝试array_intersect比较两个数组数组.
$start[]=array(
'id'=>1,
'name'=>'Up',
'action'=>'up'
);
$start[]=array(
'id'=>3,
'name'=>'Down',
'action'=>'down'
);
$start[]=array(
'id'=>5,
'name'=>'Left',
'action'=>'left'
);
$end[]=array(
'id'=>1,
'name'=>'Up',
'action'=>'up'
);
$end[]=array(
'id'=>9,
'name'=>'Up',
'action'=>'up'
);
$result=array_intersect($start,$end);
Run Code Online (Sandbox Code Playgroud)
但是,我总是收到通知消息:
注意:xyz行上的testfile.php中的数组转换为字符串
而且这种比较实际上并没有发生.
比较两个阵列而不重新发明轮子或达到过于复杂的东西的最佳方法是什么?