2016-03-09 2 views
0

Я только начинаю изучать PHP и комбинировать проблему, которую я пытаюсь изменить существующий код, чтобы соответствовать тому, что я пытаюсь сделать. У меня есть несколько переменных, которые я пытаюсь определить все, частично используя счетчик. Моя проблема заключается в добавлении счета к моим индивидуально определенным переменным. Кроме того, я уверен, что есть более чистый способ сделать это (например, цикл или вложенный массив), я просто не вижу, как это сделать.Как добавить счет к переменным в php

<?php     
$pageId0 = opt('first_tab_page'); 
    $post0 = get_post($pageId0); 
    $content0 = apply_filters('the_content', $post0->post_content); 
    $icon0 = wp_get_attachment_image_src(get_post_thumbnail_id($post0->ID), 'full'); 

$pageId1 = opt('second_tab_page'); 
    $post1 = get_post($pageId1);    
    $content1 = apply_filters('the_content', $post1->post_content); 
    $icon1 = wp_get_attachment_image_src(get_post_thumbnail_id($post1->ID), 'full'); 

$pageId2 = opt('third_tab_page'); 
    $post2 = get_post($pageId2);   
    $content2 = apply_filters('the_content', $post2->post_content); 
    $icon2 = wp_get_attachment_image_src(get_post_thumbnail_id($post2->ID), 'full');   
?> 

<div> 
<?php echo $icon0[0]; ?> 
</div> 

<div> 
<?php echo $icon1[0]; ?> 
</div> 

<div> 
<?php echo $icon2[0]; ?> 
</div> 

<?php 
    $tab_position = opt('tab_position'); 
    if ($tab_position == '' || count($tab_position) != 3) { 
     $tab_position = array(0, 1, 2); 
    } 
    for($i=0; $i < count($tab_position); $i++) 
     { 
     $selected = ''; 
     if (opt('default_selected_tab') == $tab_position[$i]){ 
       $selected = 'class="selected"'; 
     } 
?> 
<a <?php echo $selected; ?> href="#tab<?php echo $tab_position[$i];?>"> 
<?php echo $content//should be 0 to start; ?> 
</a> 
<?php } ?> 
+0

немного неясный, но Я думаю, вы должны использовать [массив] (http://php.net/manual/en/language.types.array.php) – bansi

+0

Есть ли что-нибудь, что я могу сделать, чтобы немного разобраться? Я смущен тем, как использовать массив с частями opt ('first_tab_page') – Heather

+0

, сколько страниц вы ожидаете там – santosh

ответ

1

Вот короткий пример использования массивов. комментарий в коде

// Storing tab names to an array, just add more tabs if required 
// and details for all those will be loaded in the following arrays 
$tabs = array('first_tab_page', 'second_tab_page', 'third_tab_page'); 

//declare arrays to store (not required, but better practice) 
$pageids = array(); 
$posts = array(); 
$content = array(); 
$icons = array(); 
//Iterate through the tabs array 
foreach ($tabs as $tab){ 
    //Store page id and post in a variable, we require it 
    $pageid = opt($tab); 
    $post = get_post($pageid); 
    // Store pageid in pageids. note the [] this means it will store pageid at next index 
    //also store other items 
    $pageids[] = $pageid; 
    $posts[] = $post; 
    $contents[] = apply_filters('the_content', $post->post_content); 
    $icons[] = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'full'); 
} 

Теперь $icons[0] будет содержать первый значок $icons[1] вторую и так далее. То же самое относится и к другим переменным.

Примечание: этот код просто вводится здесь и не проверяется. Исправьте, если есть синтаксические ошибки. Также обратите внимание, что это один из способов, и есть больше способов.

Но я бы предложил хранить данные каждой страницы вместе.

Edit: Вот как вы можете держать вещи вместе (показаны только соответствующие части)

$tabs = array('first_tab_page', 'second_tab_page', 'third_tab_page'); 
$pages = array(); 
foreach ($tabs as $tab){ 
    $pageid = opt($tab); 
    $post = get_post($pageid); 
    $content = apply_filters('the_content', $post->post_content); 
    $icon = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'full'); 
    //Store everything to $pages array 
    $pages[] = array('pageid' => $pageid, 'post' => $post, 'content' => $content, 'icon', $icon); 
} 

foreach ($pages as $page){ 
?> 

<div> 
<?php echo $page['icon'][0]; ?> 
</div> 

<?php } ?> 


foreach ($pages as $page){ 
?> 

<a <?php echo $selected; ?> href="#tab<?php echo $tab_position[$i];?>"> 
<?php echo $page['content']; //echo the content of page ?> 
</a> 

<?php } ?> 

Вместо Еогеасп для отображения вы можете использовать индекс также как

<a <?php echo $selected; ?> href="#tab<?php echo $tab_position[$i];?>"> 
<?php echo $pages[0]['content']; //echo the content of the first page ?> 
</a> 

<a <?php echo $selected; ?> href="#tab<?php echo $tab_position[$i];?>"> 
<?php echo $pages[1]['content']; //echo the content of the second page ?> 
</a> 
+0

Кажется, это правильный ответ, но теперь у меня две петли, поэтому все показано дважды. Как изменить код tab_position, чтобы по-прежнему подсчитывать количество сообщений и добавлять нужный номер в и применяет выбранное поле, но doesn Повторно перепечатывайте еще 2 раза. Вот что я до сих пор: http://pastebin.com/q20xPGCA – Heather

+0

посмотрел ваш код. Я не понял материал 'tab_position'. что возвращает 'opt ('default_selected_tab')? – bansi

+0

проверить эту пасту http://pastebin.com/c4b61sDU может быть полезно – bansi

0

Я не уверен, что вы пытаетесь сделать, поскольку ваш вопрос не очень ясен для меня.
Но я думаю, что вы пытаетесь отозвать $ content в своей последней строке кода. Если да, то просто положить все переменные $ Content1, $ Content2 и $ content3 в массиве, как показано ниже:

$contents = array($content1, $content2, $content3); 

Затем используйте цикл Еогеасп и пройти этот массив, как это.

$count = 0; 
foreach($contents as $content) { 
    echo $content.$count; 
    $count++; 
} 

Попробуйте и дайте мне знать, если это сработает для вас.

+0

Я смущен, как подключить это, он уже внутри какой-то петли (Я думаю), поэтому он просто повторяет все переменные $ content внутри каждого Heather

+0

Нет, первые несколько строк вашего кода определяют 3 переменные $ content0, $ content1 и $ content2, и они не находятся внутри цикла. просто поместите их в массив $ contents, а затем, где бы вы ни захотели, чтобы они отображали только их, используя цикл foreach выше в моем коде. – Krishna

0

Я предполагаю, что нет других путей (вложенных) массивов. Также я думаю, что массивы являются приемлемым решением.

foreach ($tabs as $tab) { 
    $tab['content'] = 'somecontent'; 
    $tab['counter'] = 'counter'; 
} 

или

foreach ($tabs as $tab) { 
    $tab = [ 
     "content" => "content", 
     "counter" => "counter"]; 
}