当数组中元素的顺序不重要或甚至可能发生变化时,断言两个对象数组相等的好方法是什么?
关于' 如何判断PHP数组是否为空 '的这个问题让我想到了这个问题
是否有理由count应该使用而不是empty在确定数组是否为空时?
我个人的想法是,如果2应该使用空数组的情况是等价的,empty因为它给出了布尔问题的布尔答案.从上面链接的问题来看,这似乎count($var) == 0是流行的方法.对我而言,虽然技术上正确,但毫无意义.例如Q:$ var,你是空的吗?答:7.嗯...
有没有理由我应该使用count == 0或仅仅是个人品味的问题?
正如其他人在对现在删除的答案的评论中指出的那样,count对大型数组会有性能影响,因为它必须计算所有元素,而empty一旦知道它不为空就可以停止.那么,如果他们在这种情况下给出相同的结果,但count可能效率低下,为什么我们会使用count($var) == 0?
我得到以下行的数组到字符串转换错误:
$diff = array_diff($stockist, $arr);
Run Code Online (Sandbox Code Playgroud)
这$arr是一个从JSON文件解码的数组.使用该is_array()函数,我能够验证两个参数都是数组.有人能指出我的问题
$stockist = array();
while (!feof($file_handle)) {
$line_of_text = fgetcsv($file_handle);
$query = "SELECT * FROM reorderchart WHERE medicine = '"
. trim($line_of_text[3])
. "' ORDER BY medicine";
$result = mysql_query($query);
if (trim($line_of_text[2]) - trim($line_of_text[1]) <= 0) {
while ($row = mysql_fetch_array($result)) {
$file = "results.json";
$arr = json_decode(file_get_contents($file),true);
$pharmacy = trim($row['Medicine']);
if (isset($stockist[$pharmacy])) {
$medicine = $stockist[$pharmacy];
$medicine[] = trim($row['Stockist']);
$stockist[$pharmacy] = $medicine;
} else {
$medicine = array();
$medicine[] = …Run Code Online (Sandbox Code Playgroud) [2,5,3]
[5,2,3]
Run Code Online (Sandbox Code Playgroud)
它们是相同的,因为它们具有相同的值,但不是以相同的顺序.我可以在不使用带有in_array()的foreach循环的情况下找到答案吗?我认为这不会有效率.
有没有PHP的内置函数来检查两个数组是否包含相同的值(顺序不重要?).
例如,我想要一个函数,它为以下两个输入返回true:
array('4','5','2')
array('2','4','5')
Run Code Online (Sandbox Code Playgroud)
编辑:我可以对两个阵列进行排序并对它们进行比较,但由于我是一个懒惰的家伙,我仍然更喜欢我可以拔出并使用的单线程.
我正在寻找一种方法来检查两个阵列是否相同,例如
$a = array(
'1' => 12,
'3' => 14,
'6' => 11
);
$b = array(
'1' => 12,
'3' => 14,
'6' => 11
);
Run Code Online (Sandbox Code Playgroud)
这两个是相同的,但如果单个值被更改,它将返回false,我知道我可以编写一个函数,但是有一个已经构建了吗?
我想比较两个SimpleXML Objects.
一个是从DB获取的,另一个是从XML API获取的,但结果始终为false,无论XML实际上是否相同.
我究竟做错了什么?
$objDbXml = simplexml_load_string($objReisen->xml); // XML from DB
$objApiXml = simplexml_load_string(getXMlFromApi()); // XML from Api
var_dump($objDbXml->Reise->Z_LEISTUNGEN == $objApiXml->Reise->Z_LEISTUNGEN);
// Result is always false
Run Code Online (Sandbox Code Playgroud)
var_dump的输出($ objDbXml-> Reise-> Z_LEISTUNGEN,$ objApiXml-> Reise-> Z_LEISTUNGEN):
object(SimpleXMLElement) #69 (1) {
["TextLine"]= > array(11) {
[0] = > string(43) "Erlebnisreise mit höchstens 13 Teilnehmern"
[1] = > string(39) "Durchführungsgarantie ab 4 Teilnehmern"
[2] = > string(127) "Linienflug mit South African Airways von Frankfurt a.M. nach Kapstadt und zurück von Port Elizabeth …Run Code Online (Sandbox Code Playgroud) 我正在阅读关于php的内容,它说,
==是平等使得$a == $b是true如果$a与$b具有相同的元件.
===是身份使得$a === $b是true如果$a与$b具有相同的元件,用相同的类型,以相同的顺序.
所以,我想我会尝试看看自己的差异并用这个小脚本写下来:
$a = array(1, 2, 3);
$b = array(2, 3, 1);
if ($a==$b) {echo "yeehaw!";} else {echo "nope";}
if ($a===$b) {echo "yup";} else {echo "nope";}
Run Code Online (Sandbox Code Playgroud)
我的想法是,两个数组相等并不需要相同的顺序.然而,当我跑这个时,我得到了"不"和"不".
有什么不同?
我的代码已经是安全的,在 SQL 查询中使用参数,但是,我想检测是否有人尝试将某些内容注入到提交表单中。
我找到了 Snort,但我需要 PHP 脚本级别的东西,而不是整个网络。
这是一个包含学生个人信息的网站,因此,我们将警告(甚至采取行动)任何尝试攻击的人。
我有两个数组,我必须将它们相互比较:
\n\n$a = array('BRANCH','ADDRESS','MOBILE','NAME');\n$b = array('BRANCH','ADDRESS','MOBILE','NAME');\n\n$a == $b \xe2\x86\x92 true\nRun Code Online (Sandbox Code Playgroud)\n\n但是当值的顺序不同时,这种比较不起作用:
\n\n$a = array('BRANCH','ADDRESS','MOBILE','NAME');\n$b = array('NAME','BRANCH','MOBILE','ADDRESS');\n\n$a == $b \xe2\x86\x92 false\nRun Code Online (Sandbox Code Playgroud)\n\n我如何比较这两个数组,看看它们是否包含相同的值,无论它们的顺序如何?
\n