Задачи для решения

Заполнение массивов

Заполните массив следующим образом: в первый элемент запишите 'x', во второй 'xx', в третий 'xxx' и так далее.

Решение:

<?php
	$arr = [];
	$str = 'х';
	for ($i = 0; $i < 10; $i++) {
		$arr[] = $str;
		$str .= 'x';
	}
	var_dump($arr);
?>

С помощью двух вложенных циклов заполните массив следующим образом: в первый элемент запишите '1', во второй '22', в третий '333' и так далее.

Решение:

<?php
	$arr = [];
	for ($i = 1; $i <= 9; $i++) {
		$str = '';
		for ($j = 0; $j < $i; $j++) {
			$str .= $i;
		}
		$arr[] = $str;
	}
	var_dump($arr);
?>

Сделайте функцию arrayFill, которая будет заполнять массив заданными значениями. Первым параметром функция принимает значение, которым заполнять массив, а вторым - сколько элементов должно быть в массиве. Пример: arrayFill('x', 5) сделает массив ['x', 'x', 'x', 'x', 'x'].

Решение:

<?php
	function arrayFill($str, $num)
	{
		$arr = [];
		for ($i = 1; $i <= $num; $i++) {
			$arr[] = $str;
		}
		return $arr;
	}
	
	var_dump(arrayFill('x', 5));
?>

Дан массив с числами. Узнайте сколько элементов с начала массива надо сложить, чтобы в сумме получилось больше 10-ти. Считайте, что в массиве есть нужное количество элементов.

Решение:

<?php
	$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
	$sum = 0;
	foreach ($arr as $key=>$elem) {
		$sum += $elem;
		if ($sum > 10) {
			$result = $key + 1; //+1 так как нумерация с нуля в $key
			break;
		}
	}
	
	echo $result;
?>

Многомерные массивы

Дан двухмерный массив с числами, например [[1, 2, 3], [4, 5], [6]]. Найдите сумму элементов этого массива. Массив, конечно же, может быть произвольным.

Решение:

<?php
	$arr = [[1, 2, 3], [4, 5], [6,8]];
	$sum = 0;
	foreach ($arr as $elem) {
		foreach($elem as $num) {
			$sum += $num;
		}
	}
	
	echo $sum;
?>

Дан трехмерный массив с числами, например [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]. Найдите сумму элементов этого массива. Массив, конечно же, может быть произвольным.

Решение:

<?php
	$arr = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]];
	$sum = 0;
	foreach ($arr as $elem) {
		foreach($elem as $subElem) {
			foreach($subElem as $subSubElem) {
				$sum += $subSubElem;
			}
		}
	}
	
	echo $sum;
?>

С помощью двух циклов создайте массив [[1, 2, 3], [4, 5, 6], [7, 8, 9]].

Решение:

<?php
	$arr = [];
	$count = 1;
	for ($i = 0; $i < 3; $i++) {
		for ($j = 0; $j < 3; $j++) {
			$arr[$i][$j] = $count;
			$count++;
		}
	}
	
	var_dump($arr);
?>