|
|
|
| Есть массив:
$array[0] = 'nokia';
$array[1] = 'connection';
$array[2] = 'people';
|
Нужно перебрать все возможные комбинации элементов массива.
Например:
nokia connection people
people connection nokia
connection people nokia
и т.д.
Понимаю что нужно рекурсивно пробегаться по массиву, но пока не могу понять как это сделать правильно. Большое спасибо за помощь! | |
|
|
|
|
|
|
|
для: kisit
(13.05.2009 в 19:57)
| | неужели это ТАК сложно?
<?php
$array[0] = 'nokia';
$array[1] = 'connection';
$array[2] = 'people';
$array[3] = 'apple';
$array[4] = 'sony ericsson';
function rand_phrase($array){
$values = array();
for($i = 0; ; ){
$rands = array_rand($array, count($array));
$phrase = '';
foreach($rands as $rand){
$phrase .= $array[$rand].' ';
}
$phrase = trim($phrase);
if(in_array($phrase, $values)) $i++;
else{
$i--;
$values[] = $phrase;
}
if($i > 10) break;
}
return $values;
}
$array = rand_phrase($array);
foreach($array as $x){
echo $x."\r\n<br />";
}
|
или так:
<?php
$array[0] = 'nokia';
$array[1] = 'connection';
$array[2] = 'people';
$array[3] = 'apple';
$array[4] = 'sony ericsson';
function rand_phrase($array){
$values = array();
for($i = 0; ; ){
$rands = array_rand($array, mt_rand(2, count($array)));
$phrase = '';
foreach($rands as $rand){
$phrase .= $array[$rand].' ';
}
$phrase = trim($phrase);
if(in_array($phrase, $values)) $i++;
else{
$i--;
$values[] = $phrase;
}
if($i > 50) break;
}
return $values;
}
$array = rand_phrase($array);
foreach($array as $x){
echo $x."\r\n<br />";
}
|
| |
|
|
|
|
автор: $ (13.05.2009 в 21:07) |
|
|
для: nikita2206
(13.05.2009 в 20:29)
| | ты с Нижнего Тагила? Это пи..ц ) | |
|
|
|
|
|
|
|
для: $
(13.05.2009 в 21:07)
| | а ты можешь лучше?
воображения никакого, с нижнего тагила ха, немог че лучше придумать? | |
|
|
|
|
автор: @@@ (13.05.2009 в 21:44) |
|
|
для: nikita2206
(13.05.2009 в 21:11)
| | пожалуйста, парень с нижнего тагила )
<?php
$array[0] = 'nokia';
$array[1] = 'connection';
$array[2] = 'people';
function g(&$a, $k=0)
{
if( $k == count($a) - 1 )
echo implode(', ', $a), '<br/>';
else
{
for($i = $k; $i < count($a); $i++)
{
list($a[$k], $a[$i]) = array($a[$i], $a[$k]);
g($a, $k+1);
list($a[$k], $a[$i]) = array($a[$i], $a[$k]);
}
}
}
g($array);
?>
|
| |
|
|
|
|
|
|
|
для: @@@
(13.05.2009 в 21:44)
| | большое спасибо!!!!! | |
|
|
|
|
|
|
|
для: kisit
(14.05.2009 в 10:47)
| | А как в этой функции вернуть результат через Return?
<?php
$array[0] = 'nokia';
$array[1] = 'connection';
$array[2] = 'people';
function g(&$a, $k=0)
{
if( $k == count($a) - 1 )
echo implode(', ', $a), '<br/>';
else
{
for($i = $k; $i < count($a); $i++)
{
list($a[$k], $a[$i]) = array($a[$i], $a[$k]);
g($a, $k+1);
list($a[$k], $a[$i]) = array($a[$i], $a[$k]);
}
}
}
g($array);
?>
|
| |
|
|
|
|
|
|
|
для: Port_Artur3
(10.07.2015 в 14:12)
| |
<?
$array[0] = 'nokia';
$array[1] = 'connection';
$array[2] = 'people';
function g(&$a, $k=0, &$result)
{
if( $k == count($a) - 1 ) {
//echo implode(', ', $a), '<br/>';
$result[] = $a;
}
else
{
for($i = $k; $i < count($a); $i++)
{
list($a[$k], $a[$i]) = array($a[$i], $a[$k]);
g($a, $k+1, $result);
list($a[$k], $a[$i]) = array($a[$i], $a[$k]);
}
}
}
function getVariables(array $a){
$result = array();
g($a, 0, $result);
return $result;
}
$result = getVariables($array);
echo "<pre>";
print_r($result);
echo "</pre>";
?>
|
| |
|
|
|