我有一个会话数组,我在其中存储了一些值,我打印了值 - 一切都好。然后我试图打印钥匙。当密钥为0,2,3等时返回结果,但如果密钥为1则它不会返回,即使它确实存在并且它确实有一个值相关联。
if(isset($_GET['sterge']))
{
$get=$_GET['sterge'];
$key=array_search($get, $_SESSION['produse']);
echo $key; //prints 0 if i set $get for the first element in the array, prints nothing if i set the second element, prints 2 for third element and so on...
}
如果我用键1打印元素,我会得到预期的结果。所以我不知道在哪里/在哪里看......
L.E。 $ _GET [' sterge']来自下一行(如果重要)
foreach($_SESSION['produse'] as $elm)
echo $elm."<a href='mousi.php?item=$cod&sterge=$elm'>Sterge</a><br />";
...在调用array_search()之前编写。那么我要按下&#34; Sterge&#34;然后如果(isset $ _GET)执行,我只想打印键只是为了看看它是否真正得到它们.. 另外var_dump($ _ SESSION [&#39; produse&#39;])打印出我预期打印的内容,key 1实际上有一个值(期望值)但是由于某种原因,array_search()告诉它的值密钥1&#34;没有密钥&#34; ...
最后编辑:一切都是因为我缺乏关注造成的。特定值在末尾有一个空格,因此它与在array_search()函数中传递的值不同。
答案 0 :(得分:0)
array_search如果在数组中找到针,则返回针的键,否则返回FALSE。当返回值为false时,echo $ key将打印0 ... 您可以检查给定数组中是否存在具有该名称的键,如下所示:
if(array_search($key, $array) !== false){echo $key;}else{echo "Key not found";}
确保您拥有会话密钥集。还要检查在尝试访问$ _SESSION数组及其变量的每个文件中,session_start是否正确启动了会话。使用var_dump调试所有内容并检查您的错误报告是否已启用:
如果这没有帮助,请使用更多信息更新您的问题并尝试更好地解释您的问题(使用var_dump变量结果添加相关代码)。
要启用错误报告,只需在php脚本的开头添加error_reporting(E_ALL);
之类的内容即可。以下是有关指定不同错误级别报告的示例:
<?php
// Turn off error reporting
error_reporting(0);
// Report runtime errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Report all errors
error_reporting(E_ALL);
// Same as error_reporting(E_ALL);
ini_set("error_reporting", E_ALL);
// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);
?>