2009-11-16 3 views
1

В PHP есть функция для увеличения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]

+0

Ваша пропавшая запятая в первом вспомогательном массиве. ;) – MitMaro

ответ

1

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

<?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/>"; 
} 

?> 
+0

Благодарим вас за комментарии, Ambrosia. – Newb

3

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

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

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

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

+0

Будет читать о array_map, и я попробую вам фрагмент кода, впервые услышав о array_map, спасибо за информацию. – Newb

+0

вы, должно быть, «ваш», извините, черт возьми, QWERTY. – Newb

Смежные вопросы