2013-11-12 1 views
0

Давайте предположим, у меня есть таблица вроде этого:Магазин Mysqli запросов в PHP «матрицы»

Id Name Value1 Value2 Value3 
1 Bla 1  5  1 
2 Blu 4  0  2 

Как я это в матричном формат (или аналогичный) в PHP, так что я могу с ним работать?

Я хотел бы сделать некоторые расчеты и сортировки с той частью, которая содержит:

1 5 1 
4 0 2 

Так что я мог тогда порядок и permantely изменить основную матрицу. Например:

Назначьте вес 50% (или другого) для каждого столбца, а затем переместите столбцы, связанные с нижними значениями влево.

Пример:

1*0.5 + 4*0.5 = 2.5 
5*0.5 + 0*0.5 = 2.5 
1*0.5 + 2*0.5 = 1.5 

Окончательный вывод:

Id Name Value3 Value2 Value1 
1 Bla 1  5  1 
2 Blu 2  0  4 

В C это было очень легко сделать, но в PHP, мне кажется, что это очень сложно сделать это, потому что не является объектом как M [i, j].

ответ

0

Вы должны получить доступ столбца в каждой итерации вашего запроса, вы не можете получить доступ к нему напрямую, как вы можете с результатом строки:

$values = array(); 
$multiplier = 0.5; 

foreach($result as $row) { 
    $values[1] += $row['value1'] * $multiplier; 
    $values[2] += $row['value2'] * $multiplier; 
    $values[3] += $row['value3'] * $multiplier; 
} 

print_r($values); 

В зависимости от названия ваших колонок, хотя, вы могли бы проведите через них в PHP, чтобы определить переменные или ключи массива вместо того, чтобы делать это вручную (особенно, если у вас их много). Зависит от ваших имен столбцов. Если у вас есть партии, не связанные номерами и т. Д., Вы можете прокручивать имена столбцов и исключать некоторые из них, например. id, имя и т. д. из вашей обработки. В этом случае вы должны оставить первую строку выше, вставить вместо 1 и value1 и проверку, чтобы убедиться, что ключ массива существует перед использованием оператора +=, поскольку он часто выдает ошибку, если он еще не установлен Определены:

if(!array_key_exists($yourfield, $values)) 
    $values[$yourfield] = 0; 
// continue... 
+0

Итак ... нет способа хранить данные прокси в матрице? Это облегчило бы работу с базой данных: z Я действительно устал, но завтра я посмотрю на это со свежей головой. В этом конкретном случае мне нужно перейти от столбца 3 к 63, а строки действительно зависят от querry (максимальное число строк будет около 20, а в таблице - около 400 строк). – 2Noob2Good

+0

Итак, в основном вы говорите, что если у меня есть 20 строк в querry, и я хочу работать с столбцами, мне нужно сделать querry для каждой строки, что приведет к 20 запросам для каждого столбца? Это приведет к появлению около 1200 запросов каждый раз ... Разве это не так? – 2Noob2Good

+0

Нет, вы пройдете через свои ** столбцы **, вам все равно придется бегать по всем вашим строкам, если вы не хотите делать эти вычисления в своем SQL-запросе (что, я думаю, вам нужно будет знаете, что имена столбцов уже есть, а не динамически). Когда вы говорите, что матрица ... массив даст вам нужные структурированные данные, которые вы после, это то, что вы имеете в виду? –

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