如果键为 1,array_search 不会 return 结果

array_search doesn't return result if key is 1

我有一个会话数组,我在其中存储了一些值,我打印了这些值 - 一切正常。然后我正在尝试打印密钥。 Returns 键为 0、2、3 等时的结果,但如果键为 1,则结果不会 return 即使它确实存在并且确实具有关联的值。

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 打印元素,我会得到预期的结果。所以我不知道what/where再看...

L.E。 $_GET['sterge'] 来自下一行(以防万一)

foreach($_SESSION['produse'] as $elm)
    echo $elm."<a href='mousi.php?item=$cod&sterge=$elm'>Sterge</a><br />";

...这是在调用 array_search() 之前编写的。所以会发生什么是我按 "Sterge" 然后 if(isset $_GET) 执行,我只想打印密钥只是为了看看它是否真的得到它们.. 另外 var_dump($_SESSION['produse']) 打印出我期望它打印的内容,键 1 实际上有一个值(期望值)但由于某种原因,array_search()表示键 1 "doesn't have a key"...

的值

上次编辑:一切都是因为我不注意造成的。特定值的末尾有一个 space,因此它与 array_search() 函数中传递的值不同。

array_search Returns 如果在数组中找到针的键,否则为 FALSE。当 return 值为 false 时,echo $key 将打印 0... 您可以检查给定数组中是否存在具有该名称的键,如下所示:

if(array_search($key, $array) !== false){echo $key;}else{echo "Key not found";}

确保您设置了会话密钥。还要检查您的会话是否正确启动 session_start at each file where you trying to access $_SESSION array and its variables. Use 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);
?>