Php 比较字符串并获取唯一值的有效方法
我有逗号分隔的n个Sting数字,包含Php 比较字符串并获取唯一值的有效方法,php,html,arrays,string,string-comparison,Php,Html,Arrays,String,String Comparison,我有逗号分隔的n个Sting数字,包含1,2,3,4,5,6等数字,它们的长度可以是n。我必须找到所有字符串中出现的数字 输入示例: $str1 = '1,2,3,4,5,6,7,8,9'; $str2 = '0,1,4,5,6,7,10,20,23,34,333,78'; $str3 = '5,4,8,3,1,1,1,5,6'; 预期产出: $result = '1,4,5,6'; 我知道我可以通过比较每个字符串来做到这一点,但效率不高。 第二个
1,2,3,4,5,6等数字,它们的长度可以是n
。我必须找到所有字符串中出现的数字
输入示例:
$str1 = '1,2,3,4,5,6,7,8,9';
$str2 = '0,1,4,5,6,7,10,20,23,34,333,78';
$str3 = '5,4,8,3,1,1,1,5,6';
预期产出:
$result = '1,4,5,6';
我知道我可以通过比较每个字符串来做到这一点,但效率不高。
第二个选项是获取最短字符串,然后对照每个字符串检查该字符串的编号。这将是一个小效率比前一个
我想做的就是找到更有效的方法
编辑:
我的html,从中获取值:
<form name="cstm_data_form" id="cstm_data_form">
<div id="dataSet0" onclick="removeCandidate(0)">
<input type="hidden" name="hidden_ward_name[0]" value="1,2,3,4,5,6,7,8,9,10,11,12,12,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,50,52,53,54,58,59,60,61,62,63,64,65,66">
</div>
<div id="dataSet1" onclick="removeCandidate(1)">
<input type="hidden" name="hidden_ward_name[1]" value="4,5,6,7,8,9,10,11,12,13,14,15,16,64,65,66">
</div>
<div id="dataSet2" onclick="removeCandidate(2)">
<input type="hidden" name="hidden_ward_name[2]" value="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,53,54,55,56,57,58,59,60,61,62,63,64,65,66">
</div>
<div id="dataSet3" onclick="removeCandidate(3)">
<input type="hidden" name="hidden_ward_name[3]" value="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35">
</div>
</form>
试试看
编辑:要点是将字符串转换为数组,然后获取并最终选择值。试试看
编辑:要点是将字符串转换为数组,然后获取并最终选择值。试试看
编辑:要点是将字符串转换为数组,然后获取并最终选择值。试试看
编辑:重点是将字符串转换为数组,然后获取并最终拾取值
这应该行得通。如果你想要一个,
做一个explode()
,就像其他展示给你的一样
这应该行得通。如果你想要一个,
做一个explode()
,就像其他展示给你的一样
这应该行得通。如果你想要一个,
做一个explode()
,就像其他展示给你的一样
这应该行得通。如果您想要一个,
执行一个分解()
,就像其他演示给您的一样。将字符串转换为数组,然后将返回公共值
$arr1 = explode(',','1,2,3,4,5,6,7,8,9');
$arr2 = explode(',','0,1,4,5,6,7,10,20,23,34,333,78');
$arr3 = explode(',','5,4,8,3,1,1,1,5,6');
$arrayInterset = array_intersect($arr1, $arr2, $arr3);
echo '<pre>';print_r($arrayInterset);echo '</pre>';
将字符串转换为数组,然后返回公共值
$arr1 = explode(',','1,2,3,4,5,6,7,8,9');
$arr2 = explode(',','0,1,4,5,6,7,10,20,23,34,333,78');
$arr3 = explode(',','5,4,8,3,1,1,1,5,6');
$arrayInterset = array_intersect($arr1, $arr2, $arr3);
echo '<pre>';print_r($arrayInterset);echo '</pre>';
将字符串转换为数组,然后返回公共值
$arr1 = explode(',','1,2,3,4,5,6,7,8,9');
$arr2 = explode(',','0,1,4,5,6,7,10,20,23,34,333,78');
$arr3 = explode(',','5,4,8,3,1,1,1,5,6');
$arrayInterset = array_intersect($arr1, $arr2, $arr3);
echo '<pre>';print_r($arrayInterset);echo '</pre>';
将字符串转换为数组,然后返回公共值
$arr1 = explode(',','1,2,3,4,5,6,7,8,9');
$arr2 = explode(',','0,1,4,5,6,7,10,20,23,34,333,78');
$arr3 = explode(',','5,4,8,3,1,1,1,5,6');
$arrayInterset = array_intersect($arr1, $arr2, $arr3);
echo '<pre>';print_r($arrayInterset);echo '</pre>';
这应该适合您:
只需循环使用所有变量,用逗号表示,并将分解后的数组放入$arr
在此之后,只需调用with,它将以以下方式调用函数:array\u intersect($arr[0],$arr[1],…)
最后,只需使用从数组中获取所有唯一值
这应该适合您:
只需循环使用所有变量,用逗号表示,并将分解后的数组放入$arr
在此之后,只需调用with,它将以以下方式调用函数:array\u intersect($arr[0],$arr[1],…)
最后,只需使用从数组中获取所有唯一值
这应该适合您:
只需循环使用所有变量,用逗号表示,并将分解后的数组放入$arr
在此之后,只需调用with,它将以以下方式调用函数:array\u intersect($arr[0],$arr[1],…)
最后,只需使用从数组中获取所有唯一值
这应该适合您:
只需循环使用所有变量,用逗号表示,并将分解后的数组放入$arr
在此之后,只需调用with,它将以以下方式调用函数:array\u intersect($arr[0],$arr[1],…)
最后,只需使用从数组中获取所有唯一值
对于html表单上下文中的某些内容,作为通过值的循环:
对于html表单上下文中的某些内容,作为通过值的循环:
对于html表单上下文中的某些内容,作为通过值的循环:
对于html表单上下文中的某些内容,作为通过值的循环:
从我的立场看,这像是家庭作业。并不是说这有什么问题。显示你当前的代码和你被卡住的地方。+几乎已经涵盖了这一点。@Andrew这不是家庭作业或作业。这是现实生活中的问题。我已经更新了问题。请看一看,我现在很困惑。你的问题和这个html有什么关系?!从我的立场看,这像是家庭作业。并不是说这有什么问题。显示你当前的代码和你被卡住的地方。+几乎已经涵盖了这一点。@Andrew这不是家庭作业或作业。这是现实生活中的问题。我已经更新了问题。请看一看,我现在很困惑。你的问题和这个html有什么关系?!从我的立场看,这像是家庭作业。并不是说这有什么问题。显示你当前的代码和你被卡住的地方。+几乎已经涵盖了这一点。@Andrew这不是家庭作业或作业。这是现实生活中的问题。我已经更新了问题。请看一看,我现在很困惑。你的问题和这个html有什么关系?!从我的立场看,这像是家庭作业。并不是说这有什么问题。显示你当前的代码和你被卡住的地方。+几乎已经涵盖了这一点。@Andrew这不是家庭作业或作业。这是现实生活中的问题。我已经更新了问题。请看一看,我现在很困惑。你的问题和这个html有什么关系?!为什么OP要“试试这个”?请添加一个解释,说明你做了什么,以及你为什么这样做,不仅是为了OP,也是为了SO的未来访客。OP为什么要“尝试这个”?请添加一个解释,说明你做了什么,以及你为什么这样做,不仅是为了OP,也是为了SO的未来访客。OP为什么要“尝试这个”?请添加一个解释,说明你做了什么,以及你为什么这样做,不仅是为了OP,也是为了SO的未来访客。OP为什么要“尝试这个”?请添加您所做的以及您为什么这样做的解释,不仅是为了OP,也是为了未来的SO访客。
<?php
$str1 = '1,2,3,4,5,6,7,8,9';
$str2 = '0,1,4,5,6,7,10,20,23,34,333,78';
$str3 = '5,4,8,3,1,1,1,5,6';
$i = 1;
while(isset(${"str" . $i})) {
$arr[] = explode(",", ${"str" . $i});
$i++;
}
$result = array_unique(call_user_func_array("array_intersect", $arr));
print_r($result); //As a string: echo implode(",", $result);
?>
Array
(
[0] => 1
[3] => 4
[4] => 5
[5] => 6
)
foreach($_REQUEST['hidden_ward_name'] as $key=>$string) {
if($key == 0) {
$result = array_unique(explode(',', $string));
} else {
$result = array_intersect(array_unique(explode(',', $string)), $result);
}
}
print_r(array_sort($result));