2012-07-05 64 views
1

所以我需要获得持有特定id的数组部分,以便我可以使用其中的其他变量。在数组jQuery中查找值

这里是我当前的代码来创建数组:

<?php foreach ($list_subjects as $subject): ?> 
    subjects.push({ 
     id: parseInt(<?php echo $subject['subject_id']; ?>), 
     subject_name: "<?php echo $subject['subject_name']; ?>", 
     course_type: "<?php echo $subject['course_type']; ?>", 
     num_videos: parseInt(<?php echo $subject['num_videos']; ?>), 
     subject_tag: "<?php echo $subject['subject_tags']; ?>" 
    }); 
<?php endforeach; ?> 

(以这种方式我知道混合PHP是不是好的做法,而是包涵了这个问题)

这是我正在使用的代码至少试着检查数值是否在数组中,但它每次都返回-1,而course_id的值是在数组中。

alert($。inArray(course_id,subjects.id));

这究竟是为什么?

+2

jQuery和*所有JavaScript *(除[tag:node.js])都适用于客户端;这意味着PHP不仅是“不好的做法”,而且与你所问的问题完全无关。请你能显示在浏览器中看到的呈现的标记/ JavaScript(查看源代码)? – 2012-07-05 11:48:11

+0

嘿大卫,肯定可以: \t subjects.push({ \t ID:64, \t SUBJECT_NAME: “基本知识”, \t course_type:1, \t NUM_VIDEOS:37, \t num_badges:9, \t num_quizzes: 59, \t subject_tag:“Subject One” \t}); – Sneaksta 2012-07-05 11:59:15

+0

另外,你会推荐在js中获得php数组值的最佳方式是什么?我知道我可以做ajax调用等,但有没有办法让我可以在页面加载,而不必提出额外的请求? – Sneaksta 2012-07-05 12:18:50

回答

0

这是一个Secators函数的变体,除了它没有jQuery的工作。

function inArrayById(array, value) { 
    for(var i = 0; i < array.length; i++) { 
     if(array[i]["id"] === value) return true; 
    } 

    return false; 
} 
+0

这似乎工作就在我需要的蝙蝠。谢了哥们! – Sneaksta 2012-07-05 13:09:41

1

$.inArray(course_id, subjects.id)部分将不起作用,因为idsubjects数组内的对象的关键字(因此不是subjects的属性)。试试这样:

function inArrayById(array, value) 
    $.each(array, function(i, element) { 
     if(element.id === value){ 
      return true; 
     } 
    }); 
    return false; 
} 

alert(inArrayById(subjects, course_id)) 
+0

好的,我会给它一个旋转。我是否必须使用每个循环? – Sneaksta 2012-07-05 12:02:29

+0

每个循环有什么问题? – 2012-07-05 12:08:41

+0

哈哈没什么,我只是不介意能够用一个变量来重复使用它。我想我可以重新使用刚才写的功能吗? – Sneaksta 2012-07-05 12:10:38