<?php
$randomstring = 'raabccdegep';
$arraylist = array("car", "egg", "total");
?>
Выше $randomstring
это строка, которая содержит несколько букв алфавита.
И у меня есть массив называется $arraylist
которые содержат 3 слова, такие как 'car' , 'egg' , 'total'
,
Теперь мне нужно проверить строку, используя слова в массиве, и напечатать, если слово может быть создано с использованием строки.
Для примера мне нужен вывод Like.
car is possible.
egg is not possible.
total is not possible.
Также, пожалуйста, проверьте повторение письма. т.е. beep
тоже возможно. Поскольку строка содержит два e
, Но egg
невозможно, потому что есть только один g
,
function find_in( $haystack, $item ) {
$match = '';
foreach( str_split( $item ) as $char ) {
if ( strpos( $haystack, $char ) !== false ) {
$haystack = substr_replace( $haystack, '', strpos( $haystack, $char ), 1 );
$match .= $char;
}
}
return $match === $item;
}
$randomstring = 'raabccdegep';
$arraylist = array( "beep", "car", "egg", "total");
foreach ( $arraylist as $item ) {
echo find_in( $randomstring, $item ) ? " $item found in $randomstring." : " $item not found in $randomstring.";
}
This should do the trick:
<?php
$randomstring = 'raabccdegep';
$arraylist = array("car", "egg", "total");
foreach($arraylist as $word){
$checkstring = $randomstring;
$beMade = true;
for( $i = 0; $i < strlen($word); $i++ ) {
$char = substr( $word, $i, 1 );
$pos = strpos($checkstring, $char);
if($pos === false){
$beMade = false;
} else {
substr_replace($checkstring, '', $i, 1);
}
}
if ($beMade){
echo $word . " is possible \n";
} else {
echo $word . " is not possible \n";
}
}
?>