需要从从PHP转换为jquery的数组中获取索引值

时间:2017-10-05 14:49:37

标签: php jquery json

我们10年前的软件曾经用PHP编写,并结合了HTML和SQL代码段。我被迫充分利用它。

根本没有使用JavaScript的经验,我必须使用jQuery' inArray来按值获取索引。

尽管一切似乎都是正确的,但inArray始终返回-1,尽管我应该得到正确的索引。那我做错了什么?

$html1 .= "<script src='/js/jquery-3.2.1.min.js'> </script>
<script>  var juseridarray = ".json_encode($useridarray).";

$(document).ready(function()
{
    $('#chiefname').change(UpdateInfo);
    $('#chiefid').change(UpdateInfo);                                                                                            
    $('#chiefs').change(UpdateInfo);
});
function UpdateInfo()
{
    var chiefname = $('#chiefname').val();                                                                                      
    var chiefid = $.inArray( chiefname, juseridarray);
    var chief = chiefid;
    $('#chief').val(chief);
    console.log(juseridarray);
    console.log(chiefname);
}

</script>";

对不起,我忘了提日志输出。所以这是我从firebug复制的juseridarray日志输出片段:

  

对象[430]
1:&#34;管理员&#34;
3:&#34; Bob&#34;
8:&#34; Wegner,Meike&# 34;
10:   &#34; Uhrenbauer,Sonja&#34;
[426更多...]

数组似乎有正确的索引和正确的值。因此,当我搜索Bob&#39;时,inArray返回-1,尽管&#39; Bob&#39;预计将返回3。 另一方面,我得到了Bob&#39;使用时的回报

console.log(juseridarray[3]);

数组内容是静态的。它在运行时没有变化。如果愿意,用户名将始终保持其ID(存储为索引)

1 个答案:

答案 0 :(得分:1)

首先,它不是你正在操作的数组,它是一个对象。

你不能像你想要的那样使用对象的inArray。 但是,下面的代码应返回具有给定用户名的用户的id(如果存在)。

function findUserIdByUsername(user, userArray){
     var user_id = false;
     $.each(userArray, function(id, username){ 
          if( user == username ) user_id = id
     });
     return user_id;
}

var chiedif = findUserIdByUsername('bob', juseridarray);