Cannot implicitly convert type `int' to `string[]'

HI! I’m trying to make a Dynamic Grid button system.
It searches for the number of objects with tag “UserFighter” and creates a grid of buttons based on rthe number of fighters it finds so it can dynamically add new content as it is found,
using UnityEngine;
using System.Collections;

public class UserShipSelect : MonoBehaviour 
{

	// finds all Userfighters and builds a table based on number of fighters.
	// orders fighters by number and loads images into button gridd.
	public string[] selStrings = GameObject.FindGameObjectsWithTag("UserFighter").Length; // Find UserFighter Count.

	void Start ()
	{
		// Find all images relevant to fighetrs.
		}


	void OnGUI() {
		GUILayout.BeginVertical("Ship Select");
		selGridInt = GUILayout.SelectionGrid(selGridInt, selStrings, 1);
		if (GUILayout.Button(""))
			Debug.Log("ShipSelect" + selStrings[selGridInt]);



		GUILayout.EndVertical();
	}
}

I think the answer is quite obvious :

public string[] selStrings = GameObject.FindGameObjectsWithTag("UserFighter").Length; // Find UserFighter Count.

You are literally trying to affect an int to an array of strings. By the way, it’s not recommended to affect a dynamic value, depending of the setup of your scenething when declaring your variable. You should consider doing as follow :

public GameObject[] selObjects ;
private string[] selStrings ;

 void Start ()
 {
     selObjects = GameObject.FindGameObjectsWithTag("UserFighter") ;

     selStrings = new int[selObjects.Length] ;

     for( int index = 0 ; index < selObjects.Length ; ++index )
     {
         selStrings[index] = selObjects[index].name ;
     }
 }

I don’t really get what you are trying to do.