проблема вывода массива php - PullRequest
1 голос
/ 16 ноября 2009

В php есть функция для увеличения

значения последующих значений дважды (* 2) в массиве

столбец на основе начального значения?

$beta = array(
array('5', '1''1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1','1'),
array('5','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2'),
array('5','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2'),
array('5','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2'),
array('5','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2'),
array('5','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2'),
array('5','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2'),
array('5','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2'),
array('5','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2'),
array('5','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2','2')

);

/*Example: '5' will be '10' (5*2 =10 and output 10 to web)
         '2' will be '4'  (2*2 = 4 and output 4 to web)
The next '2' will be '16' (4*2 = 8 and output 8 to web)
The next '2' will be '32' (8*2 = 16 and output 16 to web)
And so forth? */

Кроме того, есть более простой способ создания этого массива, потому что я твердо уверен, что он существует, но не слишком сложный с точки зрения конструкции, так что нуб не поймет этого, опять же, спасибо.

[Отказ от ответственности: я потратил 3 дня, пытаясь понять массивы, теперь я понимаю их; Тем не менее, я все еще новичок, и в настоящее время у меня возникают некоторые проблемы при попытке манипулировать значениями в моем массиве и выводить их в Интернет. И я все еще почти уверен, что мне есть что почитать и изучить, поэтому, пожалуйста, не болтайте, я просто нужна помощь, нашел эту проблему в этой книге C ++:

[http://books.google.com/books?id=4Fn_P7tdOZgC&pg=PT424&lpg=PT424&dq=subsequent+++column+is+twice+the+value&source=bl&ots=gSvQ_LhxoI&sig=dG_Ilf1iLO86lqX936cT1PpkPc8&hl=en&ei=OEEBS_eODYyotgOFtJD3CQ&sa=X&oi=book_result&ct=result&resnum=1&ved=0CAgQ6AEwAA#v=onepage&q=subsequent%20%20%20column%20is%20twice%20the%20value&f=false][1]

Ответы [ 2 ]

3 голосов
/ 16 ноября 2009

Вы можете попробовать array_map :

<?php
function increase($n) {
     return is_array($n) ? array_map('increase', $n) : $n * 2;
}

$new_beta = array_map("increase", $beta);

Что касается построения массива, есть другие способы сделать это, но я считаю, что это наиболее эффективный и чистый.

1 голос
/ 16 ноября 2009

Вот ответ на каждый вопрос в этом разделе книги, наслаждайтесь!

<?php

// Declare an array alpha of 10 rows and 20 columns of type int
// Initialise the array alpha to 0
$alpha = array(array());
for($i = 0; $i < 10; $i++)
{
    for($j = 0; $j < 20; $j++)
    {
        $alpha[$i][$j] = 0;
    }
}

// Store 1 in the first row and 2 in the remaining rows
for($i = 0; $i < 10; $i++)
{
    for($j = 0; $j < 20; $j++)
    {
        if($i == 0)
        {
            $alpha[$i][$j] = 1;
        }
        else
        {
            $alpha[$i][$j] = 2;
        }
    }
}

// Store 5 in the first column, and make sure that the value in
// each subsequent column is twice the value in the previous column
// (Beware this doesn't build off the initial value of 5 in the first
// column but the previously set values above)
for($i = 0; $i < 10; $i++)
{
    for($j = 0; $j < 20; $j++)
    {
        if($j == 0)
        {
            $alpha[$i][$j] = 5;
        }
        else
        {
            if($j - 1 >= 1)
            {
                $alpha[$i][$j] = $alpha[$i][$j-1] * 2;
            }
        }
    }
}

// Print the array alpha one row per line
print "Printing the array alpha one row per line:<br/>";
for($i = 0; $i < 10; $i++)
{
    for($j = 0; $j < 20; $j++)
    {
        print "[". $alpha[$i][$j] ."] ";
    }

    print "<br/>";
}

print "<br/>";

// Print the array alpha one column per line
print "Printing the array alpha one column per line:<br/>";
for($j = 0; $j < 20; $j++)
{
    for($i = 0; $i < 10; $i++)
    {
        print "[". $alpha[$i][$j] ."] ";
    }

    print "<br/>";
}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...