2011-01-18 2 views
1

Я собираюсь построить всплывающее окно Javascript в PHP, как это:цикла Еогеаспа в PHP для построения JavaScript

$popup_title = array(); 
$popup_text = array(); 
$popup_time = array(); 
$popup_delay = array(); 

array_push($popup_title, T_gettext("Ready for ...")); 
array_push($popup_text, "<a href=\"x.php\">".T_gettext("Click here to...")."</a>"); 
array_push($popup_time, 3000); 
array_push($popup_delay, 6000); 

здесь я сделать яваскрипт кода:

if(!empty($popup_title)){ 
//constuct javascript 

$popups = array(); 
foreach ($popup_title as $key => $title) 
{ 
    $popups[$key] = new stdClass(); 
    $popups[$key]->title = $title; 
} 
foreach ($popup_text as $key => $text) 
{ 
    $popups[$key]->text = $text; 
} 
foreach ($popup_time as $key => $time) 
{ 
    $popups[$key]->time = $time; 
} 
//print javascript 
echo " 
<script type=\"text/javascript\"> 
$(document).ready(function(){"; 
foreach ($popups as $popup): 
echo " 
    setTimeout(function() { 
     $.gritter.add("; echo json_encode($popup); echo "); 
    }, ".($popup_delay");"; // <---------Here I need to place popup_delay 
    endforeach; 
echo " 
}); 
</script>"; 

Это дает этот JavaScript для примера :

<script type="text/javascript"> 
$(document).ready(function(){ 
    setTimeout(function() { 
     $.gritter.add({"title":"Ready for..","text":"<a href=\"x.php\">Click here to...<\/a>","time":3000}); 
    }, 0); 
}); 
</script> 

Я не привык к foreach. для цикла будет что-то вроде этого: for($n=0; $n < count($popup_delay); $n++){ echo $popup_delay[$n]; } , но как цикл через $popup_delay значений с Еогеасп, когда я уже использую json_encode($popup) из foreach ($popups as $popup):

+0

JSON Decode его обратно в массив PHP? http://php.net/manual/en/function.json-decode.php –

+0

Вы можете вставлять утверждения 'foreach' –

ответ

1

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

$javascript_array = array(); 
$javascript_array[0]['title'] = "Ready for ..."; 
$javascript_array[0]['text'] = "Click here to..."; 
$javascript_array[0]['time'] = 3000; 
$javascript_array[0]['delay'] = 6000; 

Ваш массив будет показан как например:

if (!empty ($javascript_array)) { 
// dump in your <script> piece here 
    foreach ($javascript_array as $js_entry) { 
// put in your filler pieces here 
     echo "Title: ".$js_entry['title']; 
     echo "Text: ".$js_entry['text']; 
     echo "Time: ".$js_entry['time']; 
     echo "Delay: ".$js_entry['delay']; 
    } // end foreach 
// closed </script> 
}