dizi PHP db içeriği depolamak

3 Cevap

I am not sure how to do this, but if it can be done can anyone please help me in this. Basically I have 3 columns in my table:

ID Set   Result Case  
1  Set1  PASS   101  
2  Set2  FAIL   102  
3  Set2  FAIL   101  
4  Set1  FAIL   101  
5  Set1  PASS   104  

$set =  $row['Set'];

Ne elde etmek çalışıyorum olduğunu, bu foreach Set, saklamak onun bir dizide Result ve Case ilişkilidir.

3 Cevap

$arr = array();

foreach ($records as $key => $value)
{
    $arr[$key]['Result'] = $value['Result'];
    $arr[$key]['Case'] = $value['Case'];
}

echo '<pre>';
print_r($arr);
echo '</pre>';

Yorumlarınız ışığında:

foreach ($records as $key => $value)
{
    $arr[$key][$value['Result']] = $value['Case'];
}

En son yorumun ışığında:

foreach ($records as $key => $value)
{
    $arr[$value['Set']][$value['Result']] = $value['Case'];
}

Yorumları okuduktan sonra ben ona bir çatlak alacağını düşündüm.

Öncelikle: Eğer $array[Set2][{result}] yinelenen {sonuç} tuşları kontrol ve çiftleri ben bilmiyorum Yorumlarınız, gibi varsa onları küçük harfe gidiyorsun sürece ne soran neden çalışmaz Eğer yapardım. Bu kafa karıştırıcı ve anlamsız olarak beni vurur olacaktır. Zekâ için:

$arr[Set2][FAIL] genel $arr[Set2][fail]

[Alix Axel üçüncü kod bloğunda] yukarıda gösterildiği gibi bunu yaparsanız, size yapacağım:

$arr[Set2][FAIL] = 102 sonra verileri kaybetmenize neden $arr[Set2][FAIL] = 101 ile bu dizi indeksi değeri üzerine.

Bir başka deyişle, size kombinasyonlar (Set2 FAIL, Set2 FAIL) özgü değil gibi Yapamadıkları tabiri caizse bir "kombine anahtarı" gibi bir "set" kombinasyonu ve "sonuç" kullanıyor. Ben rahatsız edici bir cevap olduğunu biliyorum, ama ben bu konuda yanlış şekilde gidiyor bir önsezi var gibi, bir ne yapıyorsun bakmak ve neden almalıdır. Muhtemelen gibi bir dizi istiyorum:

Array
(  
    [Set1] => Array
    (  
            [101] => 'FAIL'  
            [102] => 'PASS'  
    )

    [Set2] => Array
    (  
            [101] => 'FAIL'  
            [102] => 'FAIL'  
    )
)

Bazı Set / Case çiftleri hem geçen ve başarısız olması gibi ya da bir şey, ama o zaman bile çalışmaz. Bu nedenle, burada yapabileceğiniz tek şey bir endeks olarak "id" kullanmaktır:

Array
(  
    [1] => Array
    (  
            [Set] => 'Set1'  
            [Result] => 'PASS'  
            [Case] => '101'  
    )
    [2] => Array
    (  
            [Set] => 'Set1'  
            [Result] => 'FAIL'  
            [Case] => '101'  
    )
)

Ama ben bile nasıl size söyleyemem, bu sizin sorgu sonuçları dizi ilk etapta nasıl yapılandırıldığını anlattı değil çünkü! Yani adım 1) sorgu sonuçlarını print_r veya var_dump olun.

Çağlar önce MySQLs sorgu sonucu (tabloismi gibi aynı adlı) çok boyutlu bir dizi döndürür kısa sorguları işlemek için bir işlev yazılı. Bu basit ve kısa MySQL sorguları işleme biraz zaman kazanmak umuyoruz:

<?php
/*
FUNCTION: db2array($tablename, $condition)

Which simply makes a query: SELECT * FROM $tablename WHERE $condition
and returns multidimensional array()* named as 
DB_table_name with keys named as tables_cell_name followed by row_number:

*Returns multidimensional array: $my_table[cell_name][row_number] 

Example 1:  
db2array("my_table", "cell_name = 'A' ORDER BY id LIMIT 1")
where "my_table" is DB tablename and $condition is all the rest 
what comes after MySQL's WHERE;

Example 2:
db2array("my_table"); 

Returns: $my_table[];
To see results, go for print_r($my_table[]);

*/

function db2array($tablename, $condition){

    global $$tablename;

    //if $condition is NULL set it to 1=1
    $condition = ($condition)?$condition:"1=1";

    $query = mysql_query("
    SELECT * FROM $tablename WHERE $condition
    ") or die(mysql_error()); 

    // COUNTING FIELDS AND ROWS
    $f_to = mysql_num_fields($query);
    $n_to = mysql_num_rows($query);

    // EXIT IF NO RESULTS
    if (!mysql_num_rows($query)) return false;


    // PUSHING ALL CELL NAMES TO $cellname ARRAY
    for ($f=0; $f<=$f_to-1; $f++){
        $cellname[$f] = mysql_field_name($query, $f);
    }

    //  GENERATING OUTPUT ARRAY
    for ($n=0; $n<=$n_to-1; $n++){
        foreach ($cellname as $val){
            $result[$val][$n] = mysql_result($query, $n, $val);
        }
    }

    $$tablename = $result;
    return $$tablename;

}
?>