计算数组中的行并分成2个divs php

时间:2013-11-12 13:48:12

标签: javascript php string count split

我的网站上有一个包含4列的表格。我正在使用ACF自定义字段输入我的内容。

 $string = get_field('projets');

我的字符串被分成两个div,date_index& texte_index ... date_index显示日期,text_index显示文本,因此在查找空格时会拆分每个字符串。 像这样:

这是我输入的内容= 2013-07PARISCOLLÈGEDEFRANCE 以下是它的显示方式:

<div class="date_index">2013-07</div><div class="texte_index">PARIS COLLÈGE DE FRANCE</div>

它工作正常。

然后我的frist数组被分成两列,当第一列有130行时,接下来的行显示在另一列中。

这是我的代码:

<div class="columns_projets_1">
<p><?php 
$string = get_field('projets'); 
$array = explode("\n", $string);
for($i = 0; $i <130; $i++){
$dateAndText= explode(' ', $array[$i], 2);
echo '<div class="date_index">'.$dateAndText[0].'</div>';
echo '<div class="texte_index">'.$dateAndText[1].'</div>';
}
?></p>
</div>

<div class="columns_projets_2">
<p><?php 
$string = get_field('projets'); 
$array = explode("\n", $string);
for($i = 130; $i <count($array)-1; $i++){
$dateAndText= explode(' ', $array[$i], 2);
echo '<div class="date_index">'.$dateAndText[0].'</div>';
echo '<div class="texte_index">'.$dateAndText[1].'</div>';
}
?></p>
</div>

然后我有第3列,这是代码:

<div class="columns_conferences">
<p><?php 
$string = get_field('conferences'); 
$array = explode("\n", $string);
for($i = 0; $i <300; $i++){
$dateAndText= explode(' ', $array[$i], 2);
echo '<div class="date_index">'.$dateAndText[0].'</div>';
echo '<div class="texte_index">'.$dateAndText[1].'</div>';
}
?></p>
</div>

和我的第四栏:

<div class="columns_monographies">
<p><?php 
$string = get_field('monographies'); 
$array = explode("\n", $string);
for($i = 0; $i <300; $i++){
$dateAndText= explode(' ', $array[$i], 2);
echo '<div class="date_index">'.$dateAndText[0].'</div>';
echo '<div class="texte_index">'.$dateAndText[1].'</div>';
}
?></p>
</div>

首先我要删除第3和第4列的条件($ i <300),我不想在这两列中有限制,但是当我尝试删除条件时没有什么是显示...

其次我想计算第3列中的行数,这个数字将是我第一列的限制。所以我的第1和第3列将具有相同的行号。

你了解我的意思吗? 它应该是这样的,但我无法使它工作:

在我的第一栏:

for($ i = 0; $ i&lt; 130; $ i ++){

而不是130,我的第3列数组的行数。

和第二列;

for($ i = 130; $ i

而不是130,我的第3列数组的行数。

我真的希望你能帮助我,

这是一个github链接:

https://gist.github.com/mattieumoreau/7431037

非常感谢你的帮助,

2 个答案:

答案 0 :(得分:0)

要解决您的第一个问题,请使用sizeof(数组)而不是特定数字,例如:

for($i = 0; $i < sizeof($array); $i++){
    $dateAndText= explode(' ', $array[$i], 2);
    echo '<div class="date_index">'.$dateAndText[0].'</div>';
    echo '<div class="texte_index">'.$dateAndText[1].'</div>';
}

编辑: 你的第三栏看起来有点像这样:

<div class="columns_conferences">
    <p><?php
        $string = get_field('conferences');
        $array = explode("\n", $string);
        for($i = 0; $i < sizeof($array); $i++){
            $dateAndText= explode(' ', $array[$i], 2);
            echo '<div class="date_index">'.$dateAndText[0].'</div>';
            echo '<div class="texte_index">'.$dateAndText[1].'</div>';
        }
        ?></p>
</div>

答案 1 :(得分:0)

这里有一些问题。

  1. 如果你删除了这个条件,你的for循环就会出错或者它会永远持续下去(取决于你试图删除它的方式)。要获取所有记录,您需要for ($i = 0; $i < count($array); $i += 1) { ...

  2. 要将'projets'第一列的长度限制为'conference'的长度,您需要提前提取数据,然后显示它。这就是我的意思:

    $projets = explode("\n", get_field('projets'));
    $conferences = explode("\n", get_field('conferences'));
    $monographies = explode("\n", get_field('monographies'));
    
    // Now we want to limit the length of the first column of projets (col 1) to the
    // length of conferences (col 3).
    $projets = array_chunk($projets, count($conferences)); // Split the projets into a set of arrays of the right length.
    $projets1 = array_shift($projets); // Grab the first one... that's the data for the first column.
    $projets2 = array_reduce($projets, 'array_merge', array()); // Merge the remaining arrays into a single array for display.
    

    然后:

    function displayDateAndText ($obj)
    {
        $dateAndText = explode(' ', $obj, 2);
        echo "<div class=\"date_index\">{$dateAndText[0]}</div>";
        echo "<div class=\"texte_index\">{$dateAndText[1]}</div>";
    }
    function displayRecords ($records)
    {
        echo '<p>';
        $limit = count($records);
        for ($i = 0; $i < $limit; $i += 1)
        {
            displayDateAndText($records[$i]);
        }
        echo '</p>';
    }
    ?>
    <div class="columns_projets_1">
        <?php
           displayRecords($projets1);
        ?>
    </div>
    <div class="columns_projets_2">
        <?php
           displayRecords($projets2);
        ?>
    </div>
    <div class="conferences">
        <?php
           displayRecords($conferences);
        ?>
    </div>
    <div class="monographies">
        <?php
            displayRecords($monographies);
        ?>
    </div>