1

私はphpで次の変換をしたいと思います:

from: "0110001" to: "Tuesdays, Wednesdays, Sundays".

これを行うためのボーナスポイント:

from: "0110001" to: "Tuesdays, Wednesdays and Sundays".

入力は 7 文字で、それぞれが曜日を表します。

foreach ループなしでそれを行うにはどうすればよいですか? array_walk または array_reduce を使用したいと思います。


実用的なソリューションですが、 foreach を使用します:

<?php

    function parseDays($str) {
      $days = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
      $result = array();
      foreach (str_split($str) as $k=>$v) {
        if ($v == '1') {
          $result[] = $days[$k];
        }
      }
      return join(', ', $result);
    }

echo parseDays("0110001");
4

3 に答える 3

0
<?php

$bits = array();
$bits = str_split("0110001");

function print_day($key, $item) {

  $days_of_the_week = array(
    "0" => "Mondays",
    "1" => "Tuesdays",
    "2" => "Wednesdays",
    "3" => "Thursdays",
    "4" => "Fridays",
    "5" => "Saturdays",
    "6" => "Sundays",
  );

  if ($key) {
    echo $days_of_the_week[$item] . " ";
  }
}

array_walk($bits, 'print_day');

?>
于 2013-02-21T14:25:33.840 に答える
0

これはあなたがする必要があることをするはずです

function convertDays($input) {
    $days = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
    $dayNames = array_intersect_key($days, array_filter(str_split($input)));

    if (count($dayNames) < 2) {
        return implode(', ', $dayNames);
    }

    $commaSeparatedDays = array_slice($dayNames, 0, -1);
    return implode(', ', $commaSeparatedDays) . ' and ' . end($dayNames);
}
于 2013-02-21T14:10:11.093 に答える