2012-07-05 67 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