2016-12-16 3 views
1

This is my database table which contain actual values Я хочу создать динамический 2D-массив в PHP. Я получаю значения из своей базы данных. И я хочу добавить эти значения в 2D-массив, чтобы найти корреляцию. После создания массива мой вывод должен быть как:Создать динамически 2D-массив

     Item1  Item2  Item3 Item4 
customeremail   rating rating rating rating 
customeremail   rating rating rating rating 
customeremail   rating rating rating rating 
customeremail   rating rating rating rating 

Вот мой PHP-код в этом я выборку значений из базы данных:

<?php 

$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); 

if ($connection) { 
    $sql1 = "SELECT item_name FROM feedback GROUP BY item_name"; 
    $result = mysqli_query($connection, $sql1); 

    while ($row = mysqli_fetch_array($result)) { 
     $item[]= $row['item_name'].","; 
    } 

    for ($i=0;$i<count($item);$i++) { 
     echo $item[$i]."<br>"; 
    } 

    mysqli_free_result($result); 

    $sql = "SELECT cook_email_address FROM feedback GROUP BY cook_email_address"; 
    $result = mysqli_query($connection, $sql); 

    while ($row = mysqli_fetch_array($result)) { 
     $cookemail[]= $row['cook_email_address']; 
    } 
    for ($i=0;$i<count($cookemail);$i++) { 
     echo $cookemail[$i]."<br>"; 
    } 

    mysqli_free_result($result); 

    $sql2 = "SELECT customer_email_address FROM feedback GROUP BY customer_email_address"; 
    $result = mysqli_query($connection, $sql2); 

    while ($row = mysqli_fetch_array($result)) { 
     $customeremail[]= $row['customer_email_address'].","; 
    } 
    for ($i=0;$i<count($customeremail);$i++) { 
     echo $customeremail[$i]; 
    } 

    mysqli_free_result($result); 

    $sql12 ="SELECT count(*) as total from feedback"; 
    $result = mysqli_query($connection, $sql12); 
    while ($row=mysqli_fetch_row($result)) { 
     $count = $row[0]; 
    } 

    echo $count.'<br>'; 
    for ($i=0;$i<count($cookemail);$i++) { 
     echo $cookemail[$i]; 
     $sql3 = "SELECT rating FROM feedback WHERE cook_email_address = '$cookemail[$i]'"; 
     $result = mysqli_query($connection, $sql3); 
     while ($row=mysqli_fetch_array($result)) { 
      $abc[] = $row['rating']; 
     } 
    } 
    for ($i=0;$i<count($abc);$i++) { 
     echo $abc[$i]; 
    } 
} 
?> 

Мое имя таблицы является обратная связь, где я загрузки всех значения сначала я извлекаю элементы из таблицы, для которой пользователь дал рейтинг, и после этого я получил электронную почту повара, кому принадлежит или имеет отношение . После сбора этих значений я получил электронные письма клиентов, которые дали рейтинг, и, наконец, я получил рейтинг, который я должен использовать для поиска корреляции после создания 2D-массива во время выполнения.

У меня есть общая концепция создания 2D-массива, но я не знаю, как обрабатывать свои данные, создавая 2D-массив, если кто-то здесь имеет какие-либо знания в отношении моего вопроса, а затем любезно помогите мне в решении моей проблемы.

+0

Не могли бы вы предоставить нам как минимум 3 строки ваших фактических данных в базе данных? Я считаю, что вы можете получить требуемые данные только с одним запросом. – jaro1989

+0

sir Я предоставил скриншот в верхней части таблицы моей базы данных, пожалуйста, проверьте @ jaro1989 –

+0

как jaro1989, я подозреваю, что вы можете изменить свой запрос (и/или таблицы таблиц db) и получить то, что хотите, гораздо меньше шагов ... мой мгновенная реакция заключалась бы в реорганизации ваших рейтингов, чтобы столбцы были primarykey, customerid в качестве внешнего ключа, itemid как внешний ключ и рейтинг. то это простой синтаксис sql – ivanivan

ответ

0

Чтобы получить данные сразу можно использовать GROUP BY customer_email и GROUP_CONCAT в вашем SELECT так что ваш запрос будет выглядеть следующим образом:

SELECT customer_email_address AS customeremail, 
     GROUP_CONCAT(
      DISTINCT CONCAT(customer_email_address, '/', item, '-', rating) 
     ) AS uniqueItem 
    FROM feedback 
GROUP BY customer_email_address 

Таким образом, для данных из вашего примера, мы получим следующий массив:

[ 
'0' => [ 
    'customeremail' => [email protected], 
    'uniqueItem' => '[email protected]/bread-4, [email protected]/palao-5, [email protected]/bread-5', 
     ] 
] 

Вам все равно придется упорядочить массив, но, к счастью, это просто работа с функциями php-массива. Вы можете использовать функцию array_map, чтобы избавиться от части элемента. Дайте мне знать, если у вас все еще есть вопрос, и я обновлю ответ.

+0

брат спасибо за запрос сейчас я хочу найти отношение pearson для оценок, предоставленных клиенту, чтобы найти сходство между клиентами, чтобы рекомендовать товары клиентам –

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