Jak umieścić tablicę w stringu, a następnie odczytać jako kod PHP

0

hej,

chcę do zmiennej typu string zapisać coś takiego:

 $str = "$tab['id], $tab['name'], $tab['date']";

Następnie chcę, żeby ta zmienna działała jako kod PHP.
Ten string zostanie pobrany przez funkcje jako jej parametr.
I w tej funkcji zostanie wykonana przez echo. I będzie taki efekt np.

echo $str; da nam np:

echo 100, exampleName, 2013-10-18;

:)

0
$str = sprintf("%s, %s, %s", $tab['id'], $tab['date'], $tab['name']);
echo $str;

o coś takiego chodzi?
W parametrze prześlesz sobie format wypisywania (1 argument) a w środku dodasz argumenty i wyświetlisz

0

właśnie na takim etapie teraz jestem. napisałem dokładnie taki kod.
zapomniałem napisać, że tablica też jest podawana jako parametr,
zmienna typu string. Czyli tego stringa chcę wrzucić tak:

sprintf($arr1,$arr2);
 

coś takiego chcę zrobić. $arr1 i $arr2 są przekazywane jako parametry
funkcji.

musi tak być, ponieważ obie tablice będą mieć różną wielkość. nie będzie wpisane na stałe elementów o takiej i takiej długości

poza tym raz będzie %s a raz może być np %d

0

tablicę w stringu umieścisz o tak:

$d = "aaa - {$tab['ludzie']['4p']} - bbb";

będzie to szybsze niż sprinft, ale niektórzy narzekają, że mniej czytelne (ja tak nie sądzę)

0

@dzek jak przekazuję tego stringa jako parametr funkcji to już nie działa...

nie są wstawiane w tego stringa zmienne tablicowe i są wyświetlane tylko puste pola po przecinku

0

konkretny przykład wrzuć

0
 
function test($tab, $tab_name, $sql)
{
    foreach($tab as $k=>$id)
    {
        $sql = 'SELECT * FROM '.$tab_name.' WHERE id ='.$id.' ORDER BY id ASC';
        $result = pg_query($sql);
        $aHis = pg_fetch_all($result);        

        foreach($aHis as $k=>$his)
            echo $sql;
    }
}


$insert = "INSERT INTO tabname (id, id1, id2, data_od, data_do)
    values({$his['id']},{$his['id1']}, {$his['id2']}, '{$his['data_od']}', '{$his['data_do']}'); <br />";

    
test($tab, 'table_name', $insert);
0

wtf?
przecież zmienna ze środka funkcji nie będzie dostępna poza nią, szczególnie, jeżeli najpierw tworzysz stringa, a potem odpalasz funkcję, która przypadkiem posiada taką samą nazwę zmiennej o.O wróć do podstaw, nawet podstaw podstaw, a ty się już za MySQL bierzesz o.O

0

Kurde, przede wszystkim te zmienne typu tablicowego nie są przypadkowe!
Jak pisałem wyżej, chcę przez jedną funkcję, w jednym pliku przewalić kilka
zapytań SQL. eee nieważne, olać ...

Ale masz racje. Stworze te zapytanie SQL w funkcji. Przez pętlę foreach, a w parametrze funkcji przekaże tylko tablice w której będą kolumny z tabeli bazy MySQL :)

0

Odpowiadając bezpośrednio na pytanie w temacie:

$string_storage=var_export($tab,true);
eval("\$tb=$string_storage;");
0

coś nie idzie tak. string zawiera INSERT INTO .. VAULUES(...);

Ostatecznie sam się zakręciłem... I napisałem coś takiego:

 

function test($aTab, $aTab_name)
{
    $i=0;
    foreach($aTab as $k=>$id)
    {
        $sSql2 = 'SELECT * FROM '.$aTab_name.' WHERE id_pp ='.$id.' ORDER BY id ASC';
        $pResult2 = pg_query($sql2) or die("blad zapytania do DB");
        $aHis = pg_fetch_all($result2);
        
        // print_r($aHis);        
        foreach($aHis as $k=>$his)
        {  
            (string)$sName_row = ''; (string)$sValue_row='';
            foreach($his as $k=>$v)
            {
                $sName_row .= $k.', ';
                $sValue_row .= "'".$v."', "; 
            }
            $sName_row = substr($sName_row, 0, -2);
            $sValue_row = substr($sValue_row, 0, -2);
            
            echo "INSERT INTO({$sName_row}) ".$aTab_name." values (" . $sValue_row ."); <br />";
            $i++;             
        }
    }

        echo'ILE: '. $i;
}


conn();
$aTab = pob_id();


test($aTab, 'ro_punkt_umowa');

Najważniejsze: działa :)

0

Może o to ci chodzi: http://ideone.com/eep6MD

0

Prawie... tylko ten kawałek ma śmigać na foreach

$str = "{\$tab['id']}, {\$tab['name']}, {\$tab['date']}";
</pre>

dobrze jest :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1