如果key为1,则array_search不返回结果

时间:2015-02-28 13:52:52

标签: php arrays function search key

我有一个会话数组,我在其中存储了一些值,我打印了值 - 一切都好。然后我试图打印钥匙。当密钥为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()函数中传递的值不同。

1 个答案:

答案 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);
?>