2015-08-25 4 views
0

У меня есть таблица MySQL, как это;Как считать массивы, разделенные запятыми, извлеченные из таблицы базы данных, которые содержат определенное значение в PHP

╔════╦═══════════════════════╗ 
║ id ║ comma_separated_stuff ║ 
╠════╬═══════════════════════╣ 
║ 1 ║ 1, 2, 3, 4, 5   ║ 
║ 2 ║ 1, 2, 5    ║ 
║ 3 ║ 3, 7     ║ 
║ 4 ║ 4, 8     ║ 
╚════╩═══════════════════════╝ 

мне удалось получить каждые строки в массивы как массив [0], массив [1], массив [2] и массив [3]. Вопрос в том, как подсчитать «сколько массивов, разделенных запятыми, - например,« 5 »?»

+1

так что вы пробовали? можете ли вы предоставить свой код? – CodeGodie

+0

http://stackoverflow.com/questions/6360739/how-to-store-array-or-multiple-values-in-one-column –

+3

Именно поэтому мы всегда рекомендуем нормализовать вашу базу данных, а не хранить значения, разделенные запятыми –

ответ

1
<?php 
//how many of the comma-separated-arrays include for example '5' 
$array = array(
'1, 2, 3, 4, 5', 
'1, 2, 5', 
'3, 7', 
'4, 8', 
); 

$n = 5; 
$sum = 0; 
//Split the strings to arrays of numbers 
foreach($array as $value) 
{ 
    $data = explode(', ', $value); 
    if (in_array($n, $data)) 
    { 
     ++$sum; 
    } 
} 

//prints 2 
print $sum; 
+0

Поскольку этот использует «,» в explode(); он не учитывает первые элементы в массивах, поскольку перед ними нет запятой + пробела. Поэтому я отвечу на этот ответ и ваш унизительный комментарий выше, чтобы советовать работать с еще одной таблицей и присоединяться к ним вместо сохранения значений, разделенных запятыми, в одной таблице. Благодарю. – Terby

+0

@Terby «Поскольку этот использует«, »в explode(), он не учитывает первые элементы в массивах, поскольку перед ними нет запятой + пробела» - нет, на самом деле это так. Ошибка была вызвана 'array_search', а не взрывом. Я изменил его на 'in_array', и теперь он работает правильно, если 5 - 1-й номер в списке. – user4035

+0

@Terby Извините, я не хотел унижать вас. Просто хотел сказать, что это антипаттерн. – user4035

0

следующие два примера, если вы хотите, чтобы подсчитать, сколько ключей среди самого массива с помощью:

<?php 

$a[0] = '1, 2, 3, 4, 5'; 
$a[1] = '1, 2, 5'; 
$a[2] = '3, 7 '; 
$a[3] = '4, 8'; 

$resulta = count($a); 
print $resulta;// Output 4 
?> 

Еще одно:

<?php 
$b = array ('1, 2, 3, 4, 5','1, 2, 5' ,'3, 7','4, 8'); 

$resultb = count($b); 

print $resultb;// Output 4 
?> 

следующий один, если вы хотите для подсчета количества запятых из строки:

$text = 'This , is, , a , test a,a,'; 
    echo substr_count($text, ','); // Output 6 , will give the number of comma in each one 
+0

Это не для подсчета тех, которые содержат конкретное значение, но в любом случае спасибо г-ну Элхагу. Спасибо за усилия и время. – Terby

+0

ОК, я буду рад узнать, что вы подразумеваете под конкретными значениями? дайте мне пример –

Смежные вопросы