$this->db->where('g_total != 0');
!==
не является допустимым выражением
Или даже лучше: $this->db->where('g_total !=', 0);
Нет, его нет. По этой причине большинство популярных библиотек поставляются с одной в своих пакетах утилит. Посмотрите примеры jQuery inArray и Prototype Array.indexOf .
Реализация этого в jQuery настолько проста, насколько вы можете ожидать:
function inArray(needle, haystack) {
var length = haystack.length;
for(var i = 0; i < length; i++) {
if(haystack[i] == needle) return true;
}
return false;
}
Если вы имеете дело с нормальным количеством элементов массива, вышеприведенное хорошо сработает.
РЕДАКТИРОВАТЬ : Упс. Я даже не заметил, что вы хотели увидеть, был ли массив внутри другого. Согласно документации PHP, это ожидаемое поведение PHP in_array
:
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
echo "'ph' was found\n";
}
if (in_array(array('f', 'i'), $a)) {
echo "'fi' was found\n";
}
if (in_array('o', $a)) {
echo "'o' was found\n";
}
// Output:
// 'ph' was found
// 'o' was found
Код, размещенный Крисом и Алексом, не следует этому поведению. Алекс является официальной версией прототипа indexOf, а Крис больше похож на PHP array_intersect
. Это делает то, что вы хотите:
Если вы хотите только чтобы проверить, находится ли единственное значение в массиве, тогда код Паоло сделает эту работу. Если вы хотите проверить, какие значения являются общими для обоих массивов, вам понадобится что-то вроде этого (с помощью функции inArray от Paolo):
function arrayIntersect(a, b) {
var intersection = [];
for(var i = 0; i < a.length; i++) {
if(inArray(b, a[i]))
intersection.push(a[i]);
}
return intersection;
}
Это вернет массив значений, которые находятся в a
и б
. (Математически это пересечение двух массивов.)
РЕДАКТИРОВАТЬ: См. Отредактированный код Паоло для решения вашей проблемы. :)
Array.indexOf
был представлен в JavaScript 1.6, но он не поддерживается в старых браузерах. К счастью, ребята из Mozilla сделали всю тяжелую работу для вас и предоставили вам это для совместимости:
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
Есть даже несколько удобных фрагментов использования для вашего удовольствия от написания сценариев.
Можно просто использовать, "включает" функцию, как объяснено в этот урок по w3schools
, на который это похоже
let myArray = ['Kevin', 'Bob', 'Stuart'];
if( myArray.includes('Kevin'))
alert('Kevin is here');
haystack.find(value => value == needle)
то, где стог сена является массивом и иглой, является элементом в массиве. Если элемент, не найденный еще, будет возвращен неопределенный тот же элемент.